#javascript #html
#javascript #HTML
Вопрос:
Я написал некоторый код javascript, который должен помещать параметры в поле выбора. Код поля выбора приведен ниже:
<select id="dayOfTheWeek" name="dayOfTheWeek"></select>
В моем кодировании на javascript у меня есть метод под названием populateDays, который должен заполнять поле выбора 7 параметрами — по одному на каждый день недели. Код для этого приведен ниже:
function populateDays() {
var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
var dayOfWeek = document.getElementById("dayOfTheWeek");
var today = (new Date()).getDay();
for (var i = 0; i < days.length; i ) {
var length = dayOfWeek.options.length;
dayOfWeek.add(new Option(days[i], i), length);
}
dayOfWeek.selectedIndex = today;
}
Позже в скрипте я вызываю этот метод. Я знаю, что браузер запускает код javascript при загрузке браузера, потому что я поместил инструкцию alert () внутри метода populateDays, и она появилась при загрузке страницы.
populateDays();
По какой-то причине, когда я загружаю страницу, поле выбора полностью пусто. Почему метод populateDays () не загружает это поле выбора с параметрами?
Ответ №1:
Эмм, это должно работать просто отлично. Если это не так:
Способ 2 (пример jsFiddle) — innerHTML
function populateDays() {
var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
var dayOfWeek = document.getElementById("dayOfTheWeek");
var today = (new Date()).getDay();
var options = "";
for (var i = 0; i < days.length; i ) {
options = '<option value="' days[i] '">' days[i] '</option>'
}
dayOfWeek.innerHTML = options;
dayOfWeek.selectedIndex = today;
}
Способ 3 — создание элементов программно
function populateDays() {
var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
var dayOfWeek = document.getElementById("dayOfTheWeek");
var today = (new Date()).getDay();
for (var i = 0; i < days.length; i ) {
var option = document.createElement("option");
option.value = days[i];
var optionText = document.createTextNode(days[i]);
option.appendChild(optionText);
dayOfWeek.appendChild(option);
}
dayOfWeek.selectedIndex = today;
}
Комментарии:
1. Я думаю, вы хотите, чтобы
dayOfWeek
это было в методе 3 вместоdaysOfWeek
(ближе к концу).
Ответ №2:
У меня были проблемы с этим в IE8 с новой опцией — это работало в любом другом браузере. В итоге я заменил его следующим, и это работало везде,
selectBox.append("<option value="" value "">" text "</option>");
Ответ №3:
Похоже, у brymck это уже есть. У меня возникла проблема с этим при открытии страницы. Так что это может кому-то помочь:
Я думаю, что javascipt загружается до того, как может появиться селектор. Я поместил свой код в блок jquery document ready, и затем все начало работать.
В теле:
<select id="selector1" >
</select>
И это js, который я поместил в тег в заголовке:
var optionArr = ["option1", "option2", "option3", "option4"];
$(document).ready(function(){
//add array of csv file names to selector element
var sel = document.getElementById("selector1");
for(i=0; i < csvFilesArr.length; i ){
//opt = "<option>" optionArr[i] "</option>"
var option = document.createElement("option");
option.text = optionArr[i];
sel.add(option);
}
});