2011-04-29 126 views
0

我想循环一个数组。该数组将根据您从选择框中选择哪个选项而有所不同。我无法弄清楚如何选择要循环的数组。不工作的位是每个循环内的'arrValues + thisId'。jquery,循环阵列

$('.guestLists').change(function() { 
var thisId = $(this).val(); 
var myCounter = parseInt(1); 

var arrValues0 = [ "", "", "", "" ]; 
var arrValues1 = [ "1", "1", "1", "1" ]; 
var arrValues2 = [ "2", "2", "2", "2" ]; 
// Loop over each value in the array. 

$.each(
    arrValues+thisId, 
    function(intIndex, objValue){ 
    $('#guestListName'+myCounter).attr('value',objValue); 
    myCounter++; 
    } 
); 
}); 

任何帮助将是伟大的。

+2

为什么不使用多维数组? – Hannes 2011-04-29 14:56:56

回答

0

如果你想在运行时构建的变量名,使用eval

$.each(
eval("arrValues"+thisId), 
... 

只要确保其参数的安全性,尤其是如果它在某种程度上依赖于外部/用户输入。在上面的情况下,如果thisId是一个整数,一切都应该没问题。

+0

Booyah,我喜欢这个网站。谢谢 – twsJames 2011-04-29 15:13:31

0

您可以使用窗口[“foobar”],例如,,但使用Hannes所说的多维数组是最好的方法。

0

那你怎么能访问多维数组

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <div id="foo"> 
     <select class="guestLists"> 
      <option value="0">0</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
     </select> 
     <div id="stuff"></div> 
    </div> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script> 
    $('document').ready(function(){ 
     var Values = Array(); 
     Values[0] = [ "", "", "", "" ]; 
     Values[1] = [ "1", "1", "1", "1" ]; 
     Values[2] = [ "2", "2", "2", "2" ]; 

     $('.guestLists').change(function() { 
      var thisId = $(this).val(); 

      $.each(
       Values[thisId], 
       function(intIndex, objValue){ 
        $('div#stuff').append(objValue + ', '); 
       } 
      ); 
     }); 
    }); 

    </script> 
</body> 
</html>