Есть ли способ использовать JavaScript, чтобы заполнить html-выпадающее меню значениями? - PullRequest
5 голосов
/ 07 декабря 2011

Мне нужно раскрывающееся меню, в котором можно выбрать год (1900-2011). Я почти уверен, что java-скрипт обладает функциональностью для этого, но я совершенно заблудился, как это сделать в коде.

Я использую PHP.

Разве это не было бы чем-то вроде этого?

while(i<2012){
add i to dropdown list
increment i
}

Это текущий код, который у меня есть для формы:

<form action="cite.php" method="post">
<h1>Newspaper</h1>

<script>

var select = document.getElementById("year");
for(var i = 2011; i >= 1900; --i) {
    var option = document.createElement('option');
    option.text = option.value = i;
    select.add(option, 0);
}


</script>

<table width="100%">
  <tr>
    <td><h3>Author Name</h3></td>
    <td><table width="100%" border="0">
      <tr>
        <td><label>
          <input type="text" name="lastName" id="lastName" />
        </label></td>
      </tr>
      <tr>
        <td><label>
          <input type="text" name="firstName" id="firstName" />
        </label></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td><h3>Title of Article</h3></td>
    <td><label>
      <input type="text" name="artTit" id="artTit" />
    </label></td>
  </tr>
  <tr>
    <td><h3>Title of Newspaper</h3></td>
    <td><label>
      <input type="text" name="newsTit" id="newsTit" />
    </label></td>
  </tr>
  <tr>
    <td><h3>City</h3></td>
    <td><label>
      <input type="text" name="city" id="city" />
    </label></td>
  </tr>
  <tr>
    <td><h3>Date Published</h3></td>
    <td><table width="100%" border="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td><select id="year" name="year"></select>
</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td><h3>Edition</h3></td>
    <td><label>
      <input type="text" name="edi" id="edi" />
    </label></td>
  </tr>
  <tr>
    <td><h3>Page Designation</h3></td>
    <td><label>
      <input type="text" name="page" id="page" />
    </label></td>
  </tr>
  <tr>
    <td><h3>Medium</h3></td>
    <td><table width="200">
      <tr>
        <td><label>
          <input type="radio" name="RadioGroup1" value="print" id="RadioGroup1_0" />
          Print</label></td>
      </tr>
      <tr>
        <td><label>
          <input type="radio" name="RadioGroup1" value="web" id="RadioGroup1_1" />
          Web</label></td>
      </tr>
    </table>
    </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="text" name="med" id="med" />
    </label></td>
  </tr>
  <tr>
    <td><input type="hidden" name="hiddenField" id="hiddenField" /></td>
    <td><label>
      <input type="submit" name="Submit" id="Submit" value="Submit" />
    </label></td>
  </tr>
</table>


</form>

Ответы [ 3 ]

5 голосов
/ 07 декабря 2011

Предполагается, что у вас есть этот элемент:

 <select id="year" name="year"></select>

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

var select = document.getElementById("year");
for(var i = 2011; i >= 1900; --i) {
    var option = document.createElement('option');
    option.text = option.value = i;
    select.add(option, 0);
}

Посмотреть его в действии .

Однако: Зачем вам это нужно?Разве нельзя напрямую заполнить выпадающий список со стороны сервера, что было бы более естественно?

Обновление: Из PHP:

<td>
    <select id="year" name="year">
    <?php for($i = 2011; $i >= 1900; --$i) 
              printf('<option value="%d">%d</option>', $i, $i);
    ?>
    </select> 
</td> 
2 голосов
/ 07 декабря 2011
var sel = document.getElementById('selectElementID');
var startAt = 1900;
var endAt = 2012;

for (i=0; i<=endAt; i++){
    var opt = document.createElement('li');
        opt.value = startAt + i;
        opt.innerHTML = startAt + i;
    sel.appendChild(opt)
}

JS Fiddle demo .

Или, если вы предпочитаете использовать while:

var sel = document.getElementById('selectElementID');
var startAt = 1900;
var endAt = 2012;
var i = 0;

while (i<=endAt){
    var opt = document.createElement('option');
        opt.value = startAt + i;
        opt.innerHTML = startAt + i;
    sel.appendChild(opt)
        i++;
}

JS Fiddle demo.

1 голос
/ 07 декабря 2011

Вы можете использовать document.createElement ("option") и appendChild для добавления узлов в выпадающий список.

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>

        <select id="select">

        </select>

        <script type="text/Javascript">

            var menu = document.getElementById("select");
            for(var i = 0; i < 20; i++) {
                var newOption = document.createElement("option");
                newOption.innerHTML = i;
                menu.appendChild(newOption);
            }

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