2014-02-28 85 views
0

[解决] 好吧,我发现问题...是如此愚蠢-_- 对不起(我创建选择后,我打电话给将selectedIndex设置为0 ...的函数)。/! Resolve /!创建一个选择与JS中选择的选项

我尝试用JS创建一个选择(这里一切正常),但是我不能选择一个特定的选项!我已尝试所有解决方案,但没有工作...

这是我的代码: reponse是一个包含我所有选项的表。

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); 

} 
+3

我想建议你使用jQuery,它会让你的生活更轻松:) – vlio20

+0

看看[此] [1] SO。它会问你需要的东西。 [1]:http://stackoverflow.com/questions/4590311/set-option-selected-attribute-from-dynamic-created-option – vlio20

+0

你检查是否'if'部分曾达到(你需要用'{if'来测试'if')?条件是否成真?基本调试。另外,'setAttribute(“onchange”,“”)'是一个糟糕的主意,你不应该那样做。事件处理是DOM的一个强大功能,你应该使用它(谷歌'addEventListener')。 – kapa

回答

0

您需要使用element.options[index].selected属性。

所以,试试这个:

只是为了好玩,这里是使用jQuery的解决方案:(未经测试)

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); 

} 
+0

嗨,它不工作= / – user3364054

0

您的代码工作正常(http://jsfiddle.net/enJ5F/1/我对小提琴最新的Chrome测试) :

function createSelect(response) { 
    var $select = $("<select>").appendTo($("#ChooseModele")); 
    $.each(response, function(key, value) { 
     var selected = value.name == 'modele i want selected'; 
     $("<option>", { value: value.name, selected: selected }) 
      .text(value.name) 
      .appendTo($select); 
    }); 
} 

,显示它是如何工作的小提琴:http://jsfiddle.net/ny6m5/

0

你可以保持option's index和环路后,由index选择option

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

select.selectedIndex = selectedIndex; 
相关问题