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);});