我正在尝试将onchange事件附加到js创建的复选框。
我终于让闭包在for循环中工作了,但是现在它在加载而不是更改时激活。
为什么是这样?
https://jsfiddle.net/dkrh587h/2/
chkbox.addEventListener("change", (function(newVarA, newVarB, newVarC, newVarD) {
searchMap(newVarA, newVarB, newVarC, newVarD);
}(gblStatus, "Status", statuser, chkbox.checked)), false);
最佳答案
这是因为您正在调用带有附加括号的作为第二个参数传递给addEventListener
的函数。
有时称为self-executing函数:
function() {
// will get invoked immediately
}();
由于关闭,像
statuser
这样的变量将在您的回调中可用(假设它们在“包围”您所发布代码的功能范围内声明)。这样的模式应该起作用:
var statuser = 'my user'; // will be available in your callback
chkbox.addEventListener("change", function() {
searchMap(gblStatus, "Status", statuser, chkbox.checked);
}, false);