JavaScript函数不会执行所有操作

时间:2014-12-26 15:27:00

标签: javascript for-loop

我有一个数组Orte,其中包含邮政编码和城市名称。 现在我想根据输入字段中输入的数字更改下拉列表。 输入字段具有onchange功能。功能如下。

除了for循环后的最后一行,脚本到目前为止工作。它永远不会添加最后一部分,我不知道为什么。 有人可以帮帮我吗。

先谢谢你们! Burzi

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>"
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

你的问题是在数组循环中。

从1到Orte.length,当它到达Orte.length时会抛出异常,循环后的代码不会执行。

你应该这样做:

&#13;
&#13;
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>"
}
&#13;
&#13;
&#13;

因为javascript中的数组是0索引并且最多为length-1