人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

圓滿處理一個(gè)事件激活多個(gè)函數(shù)(2)

圓滿處理一個(gè)事件激活多個(gè)函數(shù)(2)

更新時(shí)間:2019-04-25 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):


  可是在一個(gè)頁(yè)面中,我們可能會(huì)遇到有多個(gè)事件要激活多個(gè)函數(shù),每個(gè)事件都要寫(xiě)一遍那樣的代碼,顯然不是好主意。聰明的讀者可能已經(jīng)想到,應(yīng)該寫(xiě)成一個(gè)函數(shù)activeMore(),哪個(gè)事件要激活多個(gè)函數(shù)的,直接就用activeMore()就行。

  但是在上一部分中我們把事件的toString()當(dāng)作JavaScript腳步本運(yùn)行,實(shí)際上是運(yùn)行一段函數(shù)代碼,如果寫(xiě)成一個(gè)函數(shù)時(shí)還是用這個(gè)方法,即為函數(shù)中嵌套函數(shù),將會(huì)出現(xiàn)意想不到的錯(cuò)誤。 于是我們寫(xiě)成函數(shù)時(shí)把事件的toString()中的“function anonymous()”字符去掉,運(yùn)行時(shí)就不是一個(gè)函數(shù),而是函數(shù)內(nèi)部的代碼了。另外我們還可以定義先激活原有的函數(shù)還是先激活現(xiàn)在要激活的函數(shù)。最后為了方便使用,我們把事件和要激活的函數(shù)放在一起作為參數(shù),寫(xiě)成以下函數(shù):


function activeMore(event_function,order){
// order 為負(fù)數(shù)時(shí)先激活myFunction再激活前面的腳本
var isSn=event_function.indexOf("=",0);
var myEvent=event_function.substring(0,isSn);
var myFunction=event_function.substring(isSn+1,event_function.length);
var prefunction="";
if(eval(myEvent)) prefunction= eval(myEvent).toString().replace('function anonymous()',"");

if(order<0) eval(myEvent+"=new Function(myFunction+'\\n'+prefunction)");
else eval(myEvent+"=new Function(prefunction+'\\n'+myFunction)");
}

  以上函數(shù)我們先把參數(shù)“event_function”進(jìn)行字符串分析,得到事件(myEvent)和要激活的函數(shù)(myFunction),然后取得原來(lái)激活的函數(shù)(preFunction),最后把多個(gè)函數(shù)放在一起激活。因?yàn)槲覀冎皇前选癴unction anonymous()”去掉,preFunction字符串的兩端會(huì)帶有“{ }”號(hào),但并不影響程序的運(yùn)行。

  下面我們舉一個(gè)實(shí)際應(yīng)用的例子:使網(wǎng)頁(yè)中所有的鏈接都不出現(xiàn)虛線框。

  為了達(dá)到這個(gè)目的,我們給所有的鏈接的onfocus事件添加一個(gè)激活函數(shù)“blur()”。為了保證一些鏈接原有的onfocus事件激活函數(shù)仍然有效,我們要用一次activeMore()函數(shù);為了能夠得到所有的鏈接,我們用到document.body的onload事件,又要用一次activeMore()函數(shù):

//使鏈接不出現(xiàn)虛線框:
function blurLinks(){
for(i=0;i<>
activeMore("document.links["+i+"].onfocus=if(this.blur)this.blur()",-1);
}
}
activeMore("document.body.onload=blurLinks()");

  鏈接的onfocus事件(document.links[i].onfocus)要激活的函數(shù)是“if(this.blur)this.blur()”,參數(shù)order的值為-1表先激活該函數(shù)再激活它們?cè)械暮瘮?shù);document.body.onload事件要激活的函數(shù)是“blurLinks()”,參數(shù)order的值省略(或?yàn)榉秦?fù)數(shù))表先激活它原有的函數(shù)再激活“blurLinks()”。

  從例子中可以看到,這個(gè)函數(shù)用起來(lái)還挺簡(jiǎn)單吧。有了activeMore()函數(shù),無(wú)論多少個(gè)事件要激活多個(gè)函數(shù),都可以用同樣的語(yǔ)法解決了!

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 泸水县| 旬邑县| 贵南县| 曲松县| 正定县| 镇江市| 法库县| 锡林浩特市| 封丘县| 原阳县| 扶风县| 安福县| 新绛县| 错那县| 敦化市| 城固县| 项城市| 武功县| 土默特右旗| 宜川县| 池州市| 陵水| 株洲市| 渭源县| 盱眙县| 邵阳市| 茶陵县| 隆回县| 南平市| 深圳市| 镶黄旗| 正阳县| 石柱| 桐梓县| 垫江县| 玉山县| 新兴县| 苍溪县| 姜堰市| 云南省| 开鲁县|