JavaScript事件处理程序参数

前端之家收集整理的这篇文章主要介绍了JavaScript事件处理程序参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下 JavaScript代码
var ans_el = document.createElement( 'input' );
ans_el.setAttribute( 'id',unique_int_value );
ans_el.setAttribute( 'type','radio' );
ans_el.setAttribute( 'name','group' );
ans_el.setAttribute( 'value','myValue' );
ans_el.onclick = myFunction( this.id,this.value ); 

// Add ans_el to DOM.

function myFunction( index,value ) { // do something }

当然,这不能按预期工作.至少在Firefox 3.6中没有.当创建元素并且传递给myFunction的参数为null时,会触发onclick事件.将元素添加到DOM后,选择单选按钮时不会触发onclick事件.

如果有人能够深入了解这里发生的事情,和/或如何动态添加事件处理程序,我将不胜感激.

解决方法

你需要为onclick提供一个函数的引用;您当前正在执行该函数并将该结果分配给onclick处理程序.这更接近你想要的:
ans_el.onclick = function(e) {
   myFunction(ans_el.id,ans_el.value);
};

更新:决定使用event.target以获得一个更清晰的例子,因为Andir提出了这个例子.

ans_el.onclick = function(e) {
   myFunction(e.target.id,e.target.value);
};

猜你在找的JavaScript相关文章