你在循環中聲明的函數看起來很奇怪。這不是有效的JavaScript。你可以嘗試以下方法:
for (var i = 1; i <= 5; i++) {
$('input[name="img' + i + '"]').val(data);
}
,或者如果我們假設您已經定義了一些功能:
var foo = function(data, index) {
$('input[name="img' + index + '"]').val(data);
}
,你可以調用它是這樣的:
for (var i = 1; i <= 5; i++) {
foo('some data ' + i, i);
}
更新:
一個有趣的例子是p規定外在評論部分:
for (var i = 1; i <= 5; i++) {
$.post(
"test.php",
{ name: username, num: i },
function(data) {
$('input[name="img'+i+'"]').val(data);
}
);
}
這不會起作用,因爲變量i可能在循環和AJAX成功回調之間的變化值。要解決這個問題,你可以嘗試以下方法:
for (var i = 1; i <= 5; i++) {
(function(index) {
$.post(
"test.php",
{ name: username, num: index },
function(data) {
$('input[name="img'+index+'"]').val(data);
}
);
})(i);
}
或使用$.ajax()
方法,它允許你到上下文傳遞給success
回調:
for (var i = 1; i <= 5; i++) {
$.ajax({
url: 'test.php',
type: 'POST',
data: { name: username, num: i },
context: i, // here we are defining the context
success: function(result) {
// since we have used the context parameter, this variable
// here will point to the value that i had when we initiated
// the AJAX request
$('input[name="img' + this + '"]').val(result);
}
});
}
我做VAR myitem = $(「#」 + IMG1).VAL(); – davethecoder 2012-02-11 12:06:03
是否有任何特定的原因讓你使用「$ i」迭代變量而不是簡單的「我」? – maddrag0n 2012-02-11 12:07:57
正如@Drachenviech所說:'我'比'$ i'更常見。忽略'var'也是一種糟糕的風格/形式。試試這個:'for(var i = 0; i <= 5; ++ i)' – djd 2012-02-12 03:02:16