国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript 學(xué)習(xí)筆記 Black.Caffeine 09.11.28

2024-05-06 14:12:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1. 之前寫的一直都是分散的函數(shù),用到什么功能,就寫什么函數(shù),覺(jué)得不夠整潔,所以這次寫的是封裝的類,用起來(lái)還不錯(cuò),但是傳遞參數(shù)的時(shí)候遇到了不少問(wèn)題,所以,查閱了很多資料,總結(jié)如下:
1)動(dòng)態(tài)綁定事件問(wèn)題:
需要將onclick事件綁定到對(duì)象上,比如列表項(xiàng)。需要用到addEventListener或者attachEvent,用于吧函數(shù)操作添加到事件中去,而不是覆蓋,但是,attachEvent不支持FF,F(xiàn)F只能用addEventListener。so,就需要一個(gè)函數(shù),把它們倆給綜合起來(lái),于是乎,這個(gè)函數(shù)誕生了:
代碼如下:
function addEventHandler(oTarget, sEventType, fnHandler)
{
    if(oTarget.addEventListener)
    {oTarget.addEventListener(sEventType, fnHandler, false);}
    else if(oTarget.attachEvent)
    {oTarget.attachEvent('on' + sEventType, fnHandler);}
    else{oTarget['on' + sEventType] = fnHandler;}
}

2)傳遞this參數(shù)問(wèn)題:
由于我吧函數(shù)和屬性都封裝到了一個(gè)類里面,所以在綁定onclick之類的事件是,就會(huì)產(chǎn)生一個(gè)問(wèn)題,比如,addEventHandler(this.elems[i],"click",this.Move);,這樣就出錯(cuò)了,因?yàn)樵趏nclick事件發(fā)生的時(shí)候,調(diào)用的this就不是指向這個(gè)封裝的類了,于是乎,就需要用到apply()了~——應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。具體格式我就不用說(shuō)了,網(wǎng)上一大堆~函數(shù):
代碼如下:
var Bind = function(object,func){
        var args = Array.prototype.slice.call(arguments).slice(2);
        return function(){
            return func.apply(object,args);
        }
    }

調(diào)用:
this._fnMove=Bind(this,this.move,i);//this.move是我定義的一個(gè)成員函數(shù),封裝在類中
//this.elems[i].onclick=this._fnMove;//吧上面那句話換成這句話也是可以的,只不過(guò),onclick事件就被替換為this._fnMove,而不是添加this._fnMove進(jìn)去
addEventHandler(this.elems[i],"click",this._fnMove);
這樣就OK了~
PS.call()也是基本相同的功能,但具體參數(shù)不一樣
2.setInterval問(wèn)題
1)與setTimeout的區(qū)別
在一般情況下,setTimeout僅執(zhí)行一次,(當(dāng)然,如果在一個(gè)函數(shù)里反復(fù)調(diào)用setTimeout,就可以重復(fù)執(zhí)行了)而 setInterval是可以重復(fù)執(zhí)行的,直到clearIntercal()
2)在IE下不兼容問(wèn)題
這個(gè)問(wèn)題折磨了我50%的時(shí)間,哦買噶,以后是不是要半生都浪費(fèi)在跟IE干仗上了。。。
本來(lái),在chrome,ff,safari上都運(yùn)行的很好,我相當(dāng)激動(dòng),以至于遺忘了IE。。。后來(lái)在IE上一試,結(jié)果,完了,修改,google(此處為動(dòng)詞,嘿嘿),基本上花了大半天時(shí)間吧,終于搞定。 之前,語(yǔ)句是這樣的:this.timer=setInterval(this.unfold,5,this.divs[index],this);結(jié)果在IE下完全不好使。最后,在某位大俠的文章里面看到如下描述:在IE下,setTimeout和setInterval是不支持參數(shù)傳遞的.問(wèn)題很快就解決掉了,果然是我太菜了~
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 东明县| 义马市| 新野县| 黄龙县| 隆德县| 台中县| 广河县| 阿城市| 乐亭县| 洱源县| 临汾市| 二连浩特市| 广河县| 康马县| 潢川县| 新竹县| 剑河县| 江都市| 荥经县| 河间市| 水富县| 巴中市| 岗巴县| 香河县| 萝北县| 滕州市| 攀枝花市| 黄龙县| 陕西省| 晋宁县| 海晏县| 冷水江市| 六枝特区| 金川县| 哈尔滨市| 久治县| 金湖县| 大悟县| 韶关市| 邛崃市| 钟祥市|