/!\ Решить /!\ Создать выбор с параметром, выбранным в JS

[Решение] Хорошо, я нашел проблему ... я такой глупый -_- Извините за это (после того, как я создал выбор, я вызываю функцию, которая устанавливает для selectedIndex значение 0 ...).

я пытаюсь создать выбор с помощью JS (здесь все в порядке), но я не могу выбрать конкретный вариант! Я пробовал все решения, но ничего не работает...

Вот мой код: ответ - это таблица со всеми моими вариантами.

function creatSelect(reponse) {

    var name_div = document.getElementById('ChooseModele');
    var select = document.createElement("select");
    select.setAttribute("name", "ListModele");
    select.setAttribute("id", "ListModele");
    select.style.width = "300px";
    select.setAttribute("onchange", 'updateModele(this.options[this.selectedIndex].value)');
    var option = document.createElement("option");
    option.setAttribute("value", "");
    option.innerHTML = "";
    select.appendChild(option);
    for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
        {
        option = document.createElement("option");
        option.setAttribute("value", reponse[nbmessage].name);
        option.innerHTML = reponse[nbmessage].name;
        if(reponse[nbmessage].name=='**modele i want selected**')
            **option.setAttribute("selected","selected");**
        select.appendChild(option);
        }
    name_div.appendChild(select);

}

person user3364054    schedule 28.02.2014    source источник
comment
Я хотел бы предложить вам использовать jQuery, это облегчит вашу жизнь :)   -  person vlio20    schedule 28.02.2014
comment
взгляните на [это] [1] ТАК. Он спрашивает что-то вроде того, что вам нужно. [1]: stackoverflow.com/questions/4590311/   -  person vlio20    schedule 28.02.2014
comment
Вы проверяли, была ли когда-либо достигнута часть if (вам понадобится {} для проверки if)? Становится ли условие когда-нибудь истинным? Базовая отладка. Кроме того, setAttribute("onchange", "") — ужасная идея, вы не должны этого делать. Обработка событий — мощная функция DOM, вам следует ее использовать (google addEventListener).   -  person kapa    schedule 28.02.2014
comment
И еще одно: ваш код работает нормально. Я только изменил условие if в вашем коде, чтобы оно соответствовало моим данным. Пробовал в Chrome и IE11.   -  person kapa    schedule 28.02.2014
comment
Привет, да, я дошел до if (используйте предупреждение для отладки). Странно, потому что у меня не работает ни в IE, ни в firefox...   -  person user3364054    schedule 28.02.2014
comment
@user3364054 user3364054 Пожалуйста, проверьте мой jsfiddle, это может помочь вам найти настоящую проблему. Ваш код должен работать, если условие правильное. В файрфоксе тоже проверял, все нормально.   -  person kapa    schedule 28.02.2014


Ответы (3)


Вам нужно использовать свойство element.options[index].selected.

Итак, попробуйте это: (непроверено)

function creatSelect(reponse) {

    var name_div = document.getElementById('ChooseModele');
    var select = document.createElement("select");
    select.setAttribute("name", "ListModele");
    select.setAttribute("id", "ListModele");
    select.style.width = "300px";
    select.setAttribute("onchange", 'updateModele(this.options[this.selectedIndex].value)');
    var option = document.createElement("option");
    option.setAttribute("value", "");
    option.innerHTML = "";
    select.appendChild(option);
    var selectedIndex = 0;
    for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
        {
        option = document.createElement("option");
        option.setAttribute("value", reponse[nbmessage].name);
        option.innerHTML = reponse[nbmessage].name;
        if(reponse[nbmessage].name=='**modele i want selected**')
            selectedIndex = nbMessage; // save the selected option index
        select.appendChild(option);
        }
    select.options[selectedIndex].selected = true; // here, you set the default selected option
    name_div.appendChild(select);

}
person Paul Rad    schedule 28.02.2014


вы можете оставить option's index, а после цикла выбрать option с помощью index:

var selectedIndex = 0;
for (var nbmessage=0;nbmessage<reponse.length;nbmessage++)
{
    if(reponse[nbmessage].name=='**modele i want selected**')
        selectedIndex = nbmessage;
}

select.selectedIndex = selectedIndex;
person Amir Sherafatian    schedule 28.02.2014