2013-04-26 105 views
0

我在我的AJAX函数中访问循环变量时遇到问题。以下是我的代码。访问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); 
     }); 
    }); 
} 
+0

“不起作用”不是一个有用的解释 – zerkms 2013-04-26 04:42:56

+0

它真的“不起作用”兄弟! – user2310422 2013-04-26 04:45:31

+0

仍然没用。你看到了什么?任何JS错误? – zerkms 2013-04-26 04:48:06

回答

-1

你已经被覆盖了xfunction(x)

尝试在function(x)重命名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); 
     }); 
    }); 
} 
+0

您的变量“值”没有任何价值。 – user2310422 2013-04-26 04:51:40

+0

@ user2310422对,我的错误。只需从'function(value)'和'verify_error(value)'中移除'value'即可。既然你只想读取来自for循环的'x'。看到我更新的答案。 – viclim 2013-04-26 05:15:11

+0

@ user2310422此外,您可能拼写错了按钮ID:'#sumbit_button'而不是'#submit_button'。 – viclim 2013-04-26 05:16:35

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

+0

我试过像fapDaddy建议的那样做。而且还没有结果。 – user2310422 2013-04-26 04:53:53

+0

阅读更新。请阅读更多关于闭包的信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope – package 2013-04-26 07:42:15