<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>一个简单标签切换的效果javascriptaddEventListener()attachEvent()this

解决方案 »

  1.   


    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 ;
                }
    }试试这个
      

  2.   

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