2015-10-23 2 views
-1

Не знаю, где я неправильно, но следующий код, кажется, список моих выберите значение параметров как 0 - 11 вместо 1 - 12петли через ассоциативный массив в JavaScript,

ДИНАМИЧЕСКИ Произведенного HTML

<select id="Month" name="month"> 
    <option value="0">January</option> 
    <option value="1">Feburary</option> 
    <option value="2">March</option> 
    <option value="3">April</option> 
    <option value="4">May</option> 
    <option value="5">June</option> 
    <option value="6">July</option> 
    <option value="7">August</option> 
    <option value="8">September</option> 
    <option value="9">October</option> 
    <option value="10">November</option> 
    <option value="11">December</option> 
</select> 

JAVASCRIPT

var months = new Array(); 
     months[1] = 'January'; 
     months[2] = 'Feburary'; 
     months[3] = 'March'; 
     months[4] = 'April'; 
     months[5] = 'May'; 
     months[6] = 'June'; 
     months[7] = 'July'; 
     months[8] = 'August'; 
     months[9] = 'September'; 
     months[10] = 'October'; 
     months[11] = 'November'; 
     months[12] = 'December'; 
     for(var i = 0; i<12; i++){ 
      month = months[i+1]; 
      option ="<option value='"+i+"'>"+month+"</option>" 
      options = options+option; 
     } 
     $('#month').html(' <select id="' + this.id +'" name="' + this.id + '">'+options+'</select>'); 
+0

Javascript от 0 вверх, а не 1, который почему вы видите 0-11 не 1-12 – Pixelomo

+2

Вы производите НОЛЬ, потому что ваш 'i' равен нулю. HTML выводит именно то, что вы ему сказали. – epascarello

+0

Javascript не поддерживает массивы с именованными индексами (нет ассоциативных массивов) - точно так же, как боковой узел. – dognose

ответ

2

Изменить это:

option ="<option value='"+(i+1)+"'>"+month+"</option>" 

Или еще лучше:

for(var i = 1; i<=12; i++) 
1

Так измените строку

option ="<option value='"+i+"'>"+month+"</option>" 

в

option ="<option value='"+(i+1)+"'>"+month+"</option>" 
0

В течение цикла вы не увеличивающий значение I в строке 1 (я + 1). Поэтому цикл идет 0-11. Почему вы не просто цикл с

for (var i = 1; i < 13; ++i){ 
}