麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

多種方法實(shí)現(xiàn)JS動(dòng)態(tài)添加事件

2019-11-20 21:48:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
方法一、setAttribute
var obj = document.getElementById("obj");
obj.setAttribute("onclick", "javascript:alert('測(cè)試');");
但是IE不支持用 setAttribute 設(shè)置某些屬性,包括對(duì)象屬性、集合屬性、事件屬性,也就是說(shuō)用 setAttribute 設(shè)置 style、onclick、onmouseover 這些屬性在 IE 中是行不通的。

方法二、用 attachEvent 和 addEventListener
IE 支持 attachEvent,object.attachEvent(event,function),例如:
復(fù)制代碼 代碼如下:

obj.attachEvent("onclick", Foo);
function Foo()
{
alert("測(cè)試");
}

或者寫成 obj.attachEvent("onclick", function(){alert("測(cè)試");});
其它瀏覽器支持 addEventListener,element.addEventListener(type,listener,useCapture,
復(fù)制代碼 代碼如下:

obj.addEventListener("click", Foo, false);
function Foo()
{
alert("測(cè)試");
}

同樣也可寫在一起obj.addEventListener("click", function(){alert("測(cè)試");}, false);
注意 attachEvent 的事件帶 on,如 onclick,而 addEventListener 不帶 on,如 click。
復(fù)制代碼 代碼如下:

考慮兼容性:
if (window.attachEvent)//兼容IE
{
//IE 的事件代碼
}
else
{
//其它瀏覽器的事件代碼
}

上面有兩種添加事件的方法,為了同一添加事件的方法,我們不得不再重新寫一個(gè)通用的添加事件函數(shù):

版本一:
復(fù)制代碼 代碼如下:

function addEvent(elm, evType, fn, useCapture) {
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture);//DOM2.0
return true;
}
else if (elm.attachEvent) {
var r = elm.attachEvent(‘on‘ + evType, fn);//IE5+
return r;
}
else {
elm['on' + evType] = fn;//DOM 0
}
}

HTML5工作組的版本:
復(fù)制代碼 代碼如下:

var addEvent=(function(){
if(document.addEventListener){
return function(el,type,fn){
if(el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}
}else{
el.addEventListener(type,fn,false);
}
};
}else{
return function(el,type,fn){
if(el.length){
for(var i=0;i<el.length;i++){
addEvent(el[i],type,fn);
}
}else{
el.attachEvent(‘on‘+type,function(){
return fn.call(el,window.event);
});
}
};
}
})();

方法三、事件 = 函數(shù)
例:obj.onclick = Foo;
這種綁定事件的方式,兼容主流瀏覽器,但如果一個(gè)元素上添加多次同一事件呢?
復(fù)制代碼 代碼如下:

obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

如果這樣寫,那么只有最后綁定的事件,這里是method3會(huì)被執(zhí)行,此時(shí)應(yīng)該用方法二的方法進(jìn)行事件的綁定

區(qū)別IE6、IE7、IE8之間的方法:
復(fù)制代碼 代碼如下:

var isIE=!!window.ActiveXObject;
var isIE6=isIE&&!window.XMLHttpRequest;
var isIE8=isIE&&!!document.documentMode;
var isIE7=isIE&&!isIE6&&!isIE8;
if (isIE){
  if (isIE6){
    alert(”ie6″);
  }else if (isIE8){
    alert(”ie8″);
  }else if (isIE7){
    alert(”ie7″);
  }
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: sese在线视频| 国产精品久久久久久影院8一贰佰 | a黄网站 | 国产日韩免费观看 | 视频www| h色视频在线观看 | 亚洲人成网站在e线播放 | 午夜色片 | 久久福利小视频 | cosplay裸体福利写真 | 久久久三级免费电影 | 精品中文一区 | 91短视频网址 | 蜜桃视频在线观看免费 | 激情久久一区二区 | 新久草在线视频 | 天堂亚洲一区 | 欧美午夜网 | 国产成年人视频 | 特片网久久| 三级国产三级在线 | 日韩黄色免费在线观看 | 亚洲最新色 | 久久国产精品影视 | 天天躁狠狠躁夜躁2020挡不住 | 久久精品99久久久久久2456 | 日韩黄色片免费看 | 91麻豆精品国产91久久久更新资源速度超快 | 91短视频版高清在线观看www | 国产精品久久久久久久av三级 | 国内成人自拍视频 | 在线 日本 制服 中文 欧美 | 欧美韩国日本在线 | av免费在线免费观看 | lutube成人福利在线观看 | 亚洲免费高清 | 亚洲国产精品99 | 国产亚洲精品久久久久婷婷瑜伽 | 蜜桃网站在线 | 久久精品探花 | 日本成人一区二区三区 |