Jquery, перебирая массивы - PullRequest
       18

Jquery, перебирая массивы

0 голосов
/ 29 апреля 2011

Я пытаюсь перебрать массив.Массив будет отличаться в зависимости от того, какую опцию вы выбрали в окне выбора.Я не могу понять, как выбрать какой массив для цикла.Бит, который не работает, это 'arrValues ​​+ thisId' внутри каждого цикла.

$('.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++;
  }
 );
});

Любая помощь была бы полезной.

Ответы [ 3 ]

0 голосов
/ 29 апреля 2011

Если вы хотите создать имя переменной во время выполнения, используйте eval:

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

Просто обеспечьте безопасность ее параметра, особенно если он каким-то образом зависит от внешнего / пользовательского ввода.В приведенном выше случае, если thisId является целым числом, все должно быть в порядке.

0 голосов
/ 29 апреля 2011

Вот как вы можете получить доступ к многомерному массиву

<!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>
0 голосов
/ 29 апреля 2011

Вы можете использовать window ["foobar"], например, window["arrValues"+thisId], но лучше использовать многомерный массив, как сказал Ханнес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...