2013-04-26 121 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