2012-02-11 37 views
0

我想創建輸入迴路之間的變量,以便變量IMG GET數爲1〜5這樣的:jQuery的:寫2引號

img1, img2 ... img5. 

如何的img後寫$i

for ($i=1;$i<=5;$i++) { 

    function(data) { $('input[name="img1"]').val(data) }); 

} 

注: IMG是引號之間。

它edite:

user = $('input[name="name"]').val(); 
for (var i = 1; i <= 5; i++) { 
    $.post("test.php", { name: user, num: i }, 
    function(data) { 
    $('input[name="img'+i+'"]').val(data) 
    }); 
} 
+0

我做VAR myitem = $(「#」 + IMG1).VAL(); – davethecoder 2012-02-11 12:06:03

+0

是否有任何特定的原因讓你使用「$ i」迭代變量而不是簡單的「我」? – maddrag0n 2012-02-11 12:07:57

+1

正如@Drachenviech所說:'我'比'$ i'更常見。忽略'var'也是一種糟糕的風格/形式。試試這個:'for(var i = 0; i <= 5; ++ i)' – djd 2012-02-12 03:02:16

回答

5

你在循環中聲明的函數看起來很奇怪。這不是有效的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); 
     } 
    }); 
} 
+0

+1用於刪除函數 – 2012-02-11 12:08:26

+0

@Sinac,我已經更新了我的答案以涵蓋這種情況。 – 2012-02-11 13:07:24

1

像這樣:

for ($i=1;$i<=5;$i++) { 

    function(data) { $('input[name="img' + $i + '"]').val(data) }); 

} 

順便說一句,我猜you'e從PHP背景的,但在JavaScript它不是傳統的使用$用於變量名稱(除了有時用於jQuery對象)。所以通常你會這樣寫代碼:

for (i=1;i<=5;i++) { 

    function(data) { $('input[name="img' + i + '"]').val(data) }); 

}