日期:2014-05-16  浏览次数:20408 次

setAttribute('onclick',function (){})中的传值问题
IE中不支持给事件赋值的,但是FF支持
我写成setAttribute('onclick',“testvalue()”)没有任务反应
写成setAttribute('onclick',testvalue())会直接执行testvalue()函数,但是并不会给对象添加onclick事件
最后我写成setAttribute('onclick',function (){testvalue()})这样终于正确的添加onclick事件了,但是却遇到了一个传值的问题,我的代码如下:
JScript code

       items2 = oDoc.selectNodes("//CLASSNAME/Table/pcl2_id");                  
       var itemsLength=items1.length;
       for(i=0;i<itemsLength;i++)                                                                 
        {          
          var newOption = document.createElement("li");
          newOption.setAttribute('onclick',function (){load2(items2[i].text);})     
        }



这句function (){load2(items2[i].text);}中的items2[i].text不能被赋值进去,不知各位大大是否有办法解决下,用其他方式也行,只要能给对象动态设置onclick事件就行,因为对象都是用createElement生成的,用getElementById的方式不现实,跪求解答,搞了一天了,郁闷死了!!!!

------解决方案--------------------
newOption.setAttribute('onclick',function (){load2(items2[i].text);}) 

改成

newOption.setAttribute('onclick',function (v){return function(){load2(v);}}(items2[i].text))
------解决方案--------------------
是你邦定事件的方法不对

function addEventListener(control, eventName, fn) {

if (window.attachEvent) {
control.attachEvent('on' + eventName, fn);
} else if (window.addEventListener) {
control.addEventListener(eventName, fn, false);
} else {
control['on' + eventName] = fn;
}
}

邦定的时候用addEventListener(newOption, 'click', function (){load2(items2[i].text);});