我的问题有两个方面。
我正在尝试发送一个简单的get值,它是通过循环生成的,如下所示:
for(var x=0; x<del.length; x++) {
del[x].onclick = function () {
WORK(x);
}
}
这是我沮丧的工作功能
function WORK (x) {
var y = ids[x];
var url = "Delete.php?val=" + y;
window.location = url;
}
我知道我只需要将值传递给函数...但是如果我这样设置它,页面在加载时执行函数并且不等待我的点击,因为它现在它将永远传递一个未定义的值...这里发生了什么?
答案 0 :(得分:0)
for
循环中的变量提升+非范围变量。
使用.forEach
:
Array.prototype.slice.call(del).forEach(function(elem, index) {
elem.onclick = ...
});
如果不能,请使用立即调用的匿名函数:
for (var x = 0; x < del.length; x++) {
(function() {
var elem = del[x];
...
})();
}
当你遍历循环时,只有一个x
变量。它没有作用于for
循环,并且每次迭代都有变化(x++
)。当您触发单击时,将调用事件处理程序,该处理程序又调用WORK
,其值为x
作为参数,在运行时它已经为del.length