2017-02-01 4 views
0

Привет, у меня есть небольшая проблема, у меня есть около 4 блоков выбора, каждый из которых имеет разные значения, для того, чтобы пользователь мог выбирать из них, они создаются динамически в цикле в пределах java script так все они имеют один и тот же идентификатор.Получить значение нескольких блоков выбора javascript

Я хочу напечатать каждое значение, выбранное динамически, поэтому, когда вы выберете из окна выбора 1, напечатайте его значение, а затем, выбрав опцию ящика 2, первое значение будет переопределено.

Код, который я сейчас работаю только для первого окна выбора, может ли кто-нибудь помочь мне заставить его работать на всех?

for(var i=0; i<5; i++){ 
    var a=document.createElement("select"); 
    aa.setAttribute('id', 'boxes'); 
    //..addoptions in another loop then in the same loop I have 
    aa.onchange = function(){ tester();}; 
} 


function tester(){ 
    var i = document.getElementById("boxes"); 
    var ii = i.selectedIndex; 
    document.getElementsById("pTag").innerHTML=i.options[ii].value 
} 

Javascript только пожалуйста

+1

Как уже говорилось, они имеют одинаковый идентификатор поэтому 'document.getElementsById («PTAG»)' всегда будет возвращать первый выбор и, следовательно, причина только первого выбора обновляет. Используйте разные идентификаторы для выбора. Если вы также можете указать, как вы создаете поля выбора, вам будет намного легче помочь. – Milli

+0

Это имеет смысл, я создаю свои ячейки выбора в цикле, поэтому для (var i = 0; i <5; i ++) {var a = document.createElement ("select"); aa.setAttribute ('id', 'boxes'); .. а затем я добавляю опции – newbie

+0

Трудно помочь, отредактируйте свой вопрос и добавьте другой код, который делает ссылку на код, в который вы положили. Если это событие onclick или 'onchange', выполняющее его будет гораздо проще указать, как исправить вашу проблему. Но теперь используйте разные идентификаторы, 'a = document.createElement (« select »); a.id = "boxes" + i ";' должен делать это задание. – Milli

ответ

0

Измените код следующим образом это должно решить вашу проблему. Обратите внимание, что aa.onchage = tester, а не aa.onchange = tester(), причина в том, что вы назначаете aa.onchange функции tester, а не ее возвращаемое значение.

for(var i=0; i<5; i++){ 
    var a=document.createElement("select"); 
    aa.setAttribute('id', 'boxes'+i); 
    //..addoptions in another loop then in the same loop I have 
    aa.onchange = tester; 
} 


function tester(event){ 
    document.getElementsById("pTag").innerHTML = event.target.value; 
} 
+0

отлично это работает, спасибо, столько потрачено впустую слишком много времени на этом – newbie

+0

Его всегда хорошая идея отметить это как решение вашей проблемы. – Milli