首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

attachEvent()监听函数里头的this指向哪里?addEventListener()里面的是正常的,这样写可不可以

2013-03-10 
attachEvent()监听函数里面的this指向哪里?addEventListener()里面的是正常的,这样写可不可以?script typ

attachEvent()监听函数里面的this指向哪里?addEventListener()里面的是正常的,这样写可不可以?

<script type="text/javascript">
function tab(){
var a_arr=document.getElementById("tabLi").getElementsByTagName("a");
    var a_sum=a_arr.length;
for(var i=0; i<a_sum; i++){
var a=i+1;
a_arr[i].index=a;
eventListener(a_arr[i]);
}
function eventListener(obj){
if(obj.attachEvent){
obj.attachEvent("onclick",liClick)
}
else if(obj.addEventListener){
   obj.addEventListener("click",liClick,false)
}
else{
return ;
}
}
function liClick(){
for(var i=0; i<a_sum; i++){
a_arr[i].className="";
document.getElementById("tab"+a_arr[i].index).className=document.getElementById("tab"+a_arr[i].index).className.toString().replace(/show/g,"");
}
this.className="now";
document.getElementById("tab"+this.index).className+=" show";
console.log(document.getElementById("tab"+this.index).className);
};
}
tab();
</script>
一个简单标签切换的效果 javascript addEventListener() attachEvent() this
[解决办法]

function eventListener(obj,cb){
            if(obj.attachEvent){
                obj.attachEvent("onclick",function(){
                      cb instanceof Function && cb.call(obj,window.event);
                });
            }
            else if(obj.addEventListener){
               obj.addEventListener("click",function(event){
                     cb instanceof Function && cb.call(obj,event);
               },false);
            }
            else{
                return ;
            }
}

试试这个
[解决办法]
attachEvent 的this指向的是window,而addEventListener指向的被调用的fn。
这个在js高程上提到了,有空去了解一下。

热点排行