Проблема с вложенными циклами в jQuery - PullRequest
0 голосов
/ 17 ноября 2009

Я новичок в JQuery, так что будьте нежнее!У меня есть цикл, который выводит дополнительные поля в форме (в зависимости от значения).Пока все хорошо.Тем не менее, в моих дополнительных полях указан набор дат рождения, который я обычно создаю в днях / годах, используя цикл.Мой вопрос, как мне создать этот внутренний цикл внутри моего внешнего цикла?Вот основной план на данный момент:

    function addRow() {
    for(var i=1;i<numPax;i++)
    {
        $('#additionalPax').append("My additional fields HTML in here.");
    }
}

Теперь я хочу добавить цикл в строку добавления, чтобы создать свой выбор дня, например.Это не правильно, но что-то вроде этого:

    function addRow() {
        for(var i=1;i<numPax;i++)
        {
            $('#additionalPax').append("<select name='dobDay'><option selected='selected' value='1'>1</option>"+for(var d=2;d<32;d++){+"<option value="+(d)+">"+(d)+"</option>"+}+"</select>");
        }
}

Любая помощь очень ценится.

Ответы [ 5 ]

1 голос
/ 17 ноября 2009

может быть что-то вроде того, что вы ищете

function addRow() {
 for(var i=1;i<numPax;i++)
 {
   var data = "";
   for(var d=2;d<32;d++)
   {
     data += "<option value="+d+">"+d+"</option>";
   }

   $('#additionalPax').append("<select name='dobDay'><option selected='selected' value='1'>1</option>"+data+"</select>");
 }
}
0 голосов
/ 17 ноября 2009

Вы можете использовать этот код:

<select id="additionalPax"></select>
<script type="text/javascript">
    function CreateDays()
    {
        var options = '';
        for (var i = 1; i <= 31; i++)
        {
                 options += (i == 1) ? 
                 "<option selected='selected' value='" + i + "'>" + i + "</option>" : 
                 "<option value='" + i + "'>" + i + "</option>";
        }

        $('#additionalPax').html(options);
    }
    CreateDays();
</script>
0 голосов
/ 17 ноября 2009

Сначала вам нужно будет скопировать всю строку во временную переменную, а затем отправить ее в функцию добавления.

var strOption = "";

for(var d = 2; d < 32; d++) {
    strOption += "<option value=" +  d + ">" +  d  + "</option>";
}

РЕДАКТИРОВАТЬ: Для создания динамических элементов используйте document.createElement, поскольку это быстрее, чем альтернатива jQuery, хотя jQuery v1.3 оптимизировал это, но document.createElement все еще быстрее.

0 голосов
/ 17 ноября 2009

Просто создайте строку, подобную этой:

function addRow()
{
    for(var i=1;i<numPax;i++)
    {
        var str = "<select name='dobDay'><option selected='selected' value='1'>1</option>";

        for(var d = 2; d < 32; d++)
        {
            str += '<option value="' + d + '">' + d + '</option>';
        }

        str += '</select>';

        $('#additionalPax').append(str);
    }
}
0 голосов
/ 17 ноября 2009

Вы не можете сделать это таким образом. Создайте select вне цикла for и поместите его в переменную, которую затем сможете использовать внутри цикла for:

function addRow() {
    var $elem = $('#additionalPax'),
        buffer;
    buffer = "<select name='dobDay'><option selected='selected' value='1'>1</option>";
    for (var d=2; d<32; d++) {
        buffer += "<option value="+(d)+">"+(d)+"</option>";
    }
    buffer += "</select>";
    for (var i=1; i<numPax; i++) {
        $elem.append(buffer);
    }
}
...