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;
    }
};
var imgColors=document.getElementById("liColor").getElementsByTagName("img");
for(var i=0;i<imgColors.length;i++)
{
    var obj=imgColors[i];
    addEventHandler(imgColors[i],"click",function(){FaceChoose(obj.id);});}//为什么这句一直错误,要怎么样才可以动态添加事件啊
这样 

解决方案 »

  1.   

    addEventHandler(document.getElementById("div1"),"click",function(){alert('aa')})没问题的.你的那句好像多了最一后一个}
      

  2.   

    不是的
    var imgColors=document.getElementById("liColor").getElementsByTagName("img");
    for(var i=0;i<imgColors.length;i++)
    {
        var obj=imgColors[i].id.split('$')[1];
        addEventHandler(imgColors[i],"click",function(oo){FaceChoose(obj)});
    }
    你在看,为什么这样的语句要传递参数的话就会出错
      

  3.   

    这样的语句没错误
    但是每次传递的最后一个参数就是i=length-1的值
      

  4.   

    可能是这个有问题FaceChoose(obj.id)楼主贴出的代码没有问题。
      

  5.   

    是这样的,我不想为每个控件上都写代码,因此就想用这样的for循环
    FaceChoose(obj.id) 

     alert(obj.id);

    可以想象的很简单就一个obj.id,但是为什么传递的参数老是错误呢
      

  6.   

    <li class="T1" style="height: 31px;" id="liColor">
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt="" id="color$1" />
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt=""  id="color$2"/>
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt=""  id="color$3"/>
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt=""  id="color$4"/>
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt=""  id="color$5"/>
                                    <img src="#" width="34" height="20" style="margin: 3px 0 0 0;"
                                        alt=""  id="color$6"/></li>
    这个就是那个要遍历的图片,可是为什么测试的数据每次都是6,无论点哪个图片都是6,也就是所有的图片的onclick触发的事件都是
    FaceChoose(“6”) 
      

  7.   

    找不到ID定义的地方
    ID = 'undefined'
      

  8.   

    但是如果一个一个的调用
    addEventHandler方法,就不会出错,真是莫名其妙
      

  9.   

    你ID是1开始的但你 var i=0 obj.id不是对象你要去ID的话应该是'color$' + iFaceChoose()我不知道是干什么的所以下面的就不知道了
      

  10.   

    var imgColors=document.getElementById("liColor").getElementsByTagName("img"); 
    for(var i=0;i <imgColors.length;i++) 

       
      
        addEventHandler(imgColors[i],"click", FaceChoose); 
    } function FaceChoose(evt) 
    {    var obj = evt.srcElement?evt.srcElement:evt.target;
       var id=obj.id.split('$')[1];
       alert(id);
     }