2014-12-26 2 views
1

У меня есть массив Orte, который содержит почтовый индекс и название города. Теперь я хочу изменить выпадающее меню в зависимости от числа, введенного в поле ввода. Поле ввода имеет функцию onchange. Функция следующая.Функция JavaScript не выполняет все

Скрипт работает до сих пор, кроме последней строки после цикла for. Он никогда не добавляет последнюю часть, и я не знаю, почему. Может кто-нибудь мне помочь.

Заранее благодарю за андерсеров! Бурзи

function updateOrt(eingabe){  
    document.getElementById("ort_platzhalter").innerHTML = '<select name="ort">' 
    for (var i = 1; i <= Orte.length; i++){ 
     if(Orte[i].PLZ == eingabe){ 
      document.getElementById("ort_platzhalter").innerHTML += '<option value="' + Orte[i].id + '">' + Orte[i].Ort + '</option>' 
     } 
    } 
    document.getElementById("ort_platzhalter").innerHTML += "</select>" 
} 
+0

Что такое «последняя часть»? – punund

+1

use var myOrt = document.getElementById ("ort_platzhalter"); не возвращайте его каждый раз. – jony89

+0

Массивы основаны на нулевом значении. 'I = 0; i

ответ

1

Вы должны обновить innerHTML в одном кадре , Сначала создайте строку, затем назначьте ее. Кроме того, массивы индексируются с нулевой отметкой, поэтому я предполагаю, что вы хотите начать с 0 и заканчивать один раз, когда это длина Orte (i = Orte.length).

function updateOrt(eingabe){ 
    var str = '<select name="ort">' 
    for (var i = 0; i < Orte.length; i++){ 
     if(Orte[i].PLZ == eingabe){ 
      str += '<option value="' + Orte[i].id + '">' + Orte[i].Ort + '</option>' 
     } 
    } 
    str += "</select>" 
    // now assign the str to innerHTML 
    document.getElementById("ort_platzhalter").innerHTML = str; 
} 
0

ваша проблема в цикле массива.

Вы переходите от 1 до Orte.length, когда он достигает Orte.length, он выдает исключение и код после того, как цикл не выполняется.

вы должны сделать это таким образом:

function updateOrt(eingabe){  
 
    document.getElementById("ort_platzhalter").innerHTML = '<select name="ort">' 
 
    for (var i = 0; i < Orte.length; i++){ 
 
     if(Orte[i].PLZ == eingabe){ 
 
      document.getElementById("ort_platzhalter").innerHTML += '<option value="' + Orte[i].id + '">' + Orte[i].Ort + '</option>' 
 
     } 
 
    } 
 
    document.getElementById("ort_platzhalter").innerHTML += "</select>" 
 
}

, потому что массивы в JavaScript являются 0 проиндексированы и перейти к длине-1

Смежные вопросы