2012-11-30 1 views
1

Я пытаюсь создать код, который добавляет все параметры элемента для каждого элемента select. По какой-то причине только последний элемент выбора получает параметры.
Вот код:Только последний элемент select получает элементы опции

for (var i=0; i<itemcount; i++) { 
    var newE=document.createElement("span"); 
    var newD=document.createElement("input"); 
    var newS=document.createElement("select"); 
    newE.id="itemcontainer"; 
    newD.id="drop"+i; 
    newS.id="sel"+i; 
    for (var j=0; j<itemos.length; j++) { 
     newS.appendChild(itemos[j]); 
    } 
    newD.type="checkbox"; 
    newD.name="drop"; 
    newE.appendChild(newD); 
    newE.appendChild(document.createTextNode("Drop? ")); 
    newE.appendChild(newS); 
    container.appendChild(newE); 
    container.appendChild(document.createElement("br")); 
} 

Что не так?

ответ

4

Элемент <option> может быть только одним <select> за раз. Вы пытаетесь добавить те же самые опции во многие разные списки <select>, и это не сработает.

Вам необходимо создать новые <option> элементов для каждого <select>.

+2

Следует также отметить, что если у вас есть большое количество этих проходов, входов, выделений и вариантов для сборки, вы можете захотеть использовать кеширование базового объекта и .clone() - как они были в последний раз, это намного быстрее, чем выполнение нового .createElement() каждый раз. Возможно, даже быстрее это прямой вызов .innerHtml() со строкой. –

+0

@ mori57 определенно хорошие моменты. – Pointy

+0

@ mori57 Да, я каждый раз создавал варианты, и это сработало! – gskartwii