我有一个向表格添加一些行的函数,最后有一个扩展器。首次呈现页面时,有 30 行,扩展器由鼠标单击触发,因为onclick();
事件在文档标记中内联描述。
当我添加新的onclick();
时,我这样做是在一个循环中通过一些 JSON 加载接下来的 30 个对象,我通过 XHR 获得。
newCell.onclick = (function(id){toggleCertificate(id, this, i);})(currCert['id']);
现在currCert
包含一个'id'
我想在这个处理程序中的整数,这样对于每个i
,都会有一个不同的整数来代替currCert['id']
预期toggleCertificate(integer id ...);
newCell.onclick = function(){toggleCertificate(12983, this, 5);};
this
需要像引用newCell
对象一样向下传递,而其他两个变量需要以整数形式向下传递,以便在toggleCertificate
执行时被解释为它们的值
我究竟做错了什么?我发现这种将函数附加到事件处理程序的语法非常棘手。
目前,此代码的行为类似于尝试使用我无法调试的数据执行“toggleCertificate”。Firebug 的 DOM 检查器显示附加的 onclick 变为
(function (){toggleCertificate(currCert['id']), this, i})
页面开始执行所有正确的onclick
功能,而无需同时单击。
我希望 onclick 事件等于这个字符串
"toggleCertificate(" + currCert['id'] + ", this, " + i + ");"
抱歉,如果我使用了不正确的 JavaScript 标准,尤其是关于“事件处理程序”、“对象”和“内联”的任何词-_-