我有一个数组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>"
}
答案 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时会抛出异常,循环后的代码不会执行。
你应该这样做:
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;
因为javascript中的数组是0索引并且最多为length-1