在Ajax函数中访问for循环变量的问题

时间:2013-04-26 04:39:55

标签: ajax variables

我在访问AJAX函数中的循环变量时遇到问题。以下是我的代码。

for (var x; x<=8; x++){
    $('#sumbit_button'+x).bind('keyup paste', function(value){
        var val = $(this).val();
        $.post('index.php', {val : val }, function(data){
            $('#sumbit_this_'+x).html(data);
            verify_error(value);
        });
    });
}

2 个答案:

答案 0 :(得分:0)

该行

$('#sumbit_button'+x).bind('keyup paste', function(x){ ... }

表示您之前定义的变量x在本地函数范围内被函数参数x覆盖,实际上是keyuppaste事件。如果您想继续引用x,请将function(x){...}重命名为更合乎逻辑的内容,例如function(event) {...},或者如果您不需要,请不要使用函数参数function(){...}

阅读有关jQuery和Javascript事件处理程序如何工作的更多信息是个好主意。

<强>更新

您当前版本的脚本无法正常运行,因为您仍然将jQuery事件对象传递给verify_error而不是x。问题是您在声明事件处理程序时未传递x,而是声明新变量,当前称为value。从$('#sumbit_button'+x).bind('keyup paste', function(value){...}删除变量,只需将'x'传递给verify_error,就像在脚本的第一个版本中一样。

答案 1 :(得分:-1)

您已x

覆盖了function(x)

尝试将x中的function(x)重命名为function(y)或其他有意义的内容。

for (var x; x<=8; x++){
    $('#sumbit_button'+x).bind('keyup paste', function(){
        var val = $(this).val();
        $.post('index.php', {val : val }, function(data){
            $('#sumbit_this_'+x).html(data);
            verify_error(x);
        });
    });
}