【发布时间】:2019-05-31 05:25:57
【问题描述】:
我有一个动态单选选项,可以触发两个不同的数组显示在下拉选择中。
https://jsfiddle.net/carvingpixel/5mcux28z/3/
<form name="frmRadio" id="radio-buttons" action="">
<input type="radio" id="radio-kits" name="option" onclick="change(this)">Kits
<input type="radio" id="radio-starLabs" name="option" onclick="change(this)">StarLabs
<select id="arrays">
<option id="items"></option>
</select>
</form>
<script>
var kits = ["Lego WeDo", "Force & Motion", "Bernoulli's Lift"];
var starLabs = ["Constellations", "Starfields", "Moon"];
function change(radio) {
if (radio.checked && radio.id === "radio-kits") {
for (var i = 0; i < kits.length; i++) {
document.getElementById("items").innerHTML = kits[i];
}
} else {
for (var i = 0; i < starLabs.length; i++) {
document.getElementById("items").innerHTML = starLabs[i];
}
}
}
</script>
我已经完成了大部分工作,但我坚持让数组的每个项目都显示在列表中。目前,它显示的是迭代中的最后一项,而不是每一项。
【问题讨论】:
-
我有点困惑。
=是赋值,而不是附加。而你正在做document.getElementById("items").innerHTML = kits[i];。所以当然它只会是一个单一的值。最后一个。如果你想追加,那就是+= -
另外,不要在这样的循环中重复查找。在循环外进行查找,将其放入变量中,然后在循环中使用该变量。
-
次要注意事项,避免内联绑定。请改用
addEventListener()。 -
@Taplar 添加如下事件监听器,您将如何传递从套件或 starlabs 中选择的收音机?
var el = document.getElementById("radio-buttons"); el.addEventListener("click", function(){change()}, false);
标签: javascript arrays