Javascript onclick getvalue未定义

时间:2016-04-25 11:54:23

标签: javascript

我的问题有两个方面。

我正在尝试发送一个简单的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;
    }

我知道我只需要将值传递给函数...但是如果我这样设置它,页面在加载时执行函数并且不等待我的点击,因为它现在它将永远传递一个未定义的值...这里发生了什么?

1 个答案:

答案 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