Javascript onclick getvalue 是未定义的

Javascript onclick getvalue is undefined

本文关键字:未定义 getvalue onclick Javascript      更新时间:2023-09-26

我的问题有两个方面。

我正在尝试发送一个简单的获取值,该值是通过如下所示的循环生成的:

    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;
    }

我知道我只需要将值传递给函数...但是如果我这样设置它,页面会在加载时执行函数并且不等待我的点击,就像现在一样,它将始终传递一个未定义的值......这是怎么回事?

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