Javascript 试图以html格式将数组项传递给getElementById()选择选项
我有一个动态单选选项,它可以触发两个不同的数组以下拉选择方式显示Javascript 试图以html格式将数组项传递给getElementById()选择选项,javascript,arrays,Javascript,Arrays,我有一个动态单选选项,它可以触发两个不同的数组以下拉选择方式显示 套件 星际实验室 var套件=[“乐高WeDo”、“力与运动”、“伯努利升降机”]; var starLabs=[“星座”、“星域”、“月亮”]; 功能更改(收音机){ 如果(radio.checked&&radio.id==“无线电套件”){ 对于(变量i=0;i
套件
星际实验室
var套件=[“乐高WeDo”、“力与运动”、“伯努利升降机”];
var starLabs=[“星座”、“星域”、“月亮”];
功能更改(收音机){
如果(radio.checked&&radio.id==“无线电套件”){
对于(变量i=0;i
我有它的大部分工作,但我坚持让数组中的每一项都显示在列表中。目前,它显示的是迭代中的最后一项,而不是每个项。您的错误是直接使用一个
,而您本应使用
和多个
在下面的代码片段中,我将为每个数组条目生成新选项,然后使用innerHtml
将它们附加到
const kits=['Lego WeDo'、'Force&Motion'、'Bernoulli's Lift';
星群实验室=[‘星座’、‘星场’、‘月亮’];
//将要更改选择选项的函数
函数fillSelect(值){
document.getElementById(“数组”).innerHTML=
reduce((tmp,x)=>`${tmp}${x}`,'';
}
功能更改(收音机){
如果(radio.checked&&radio.id===='radio kits'){
fillSelect(套件);
}否则{
fillSelect(starLabs);
}
}
套件
星际实验室
每次迭代都要用当前值替换上一个值,所以最后一个值就是正在使用的值是正常的。您还需要使用select的id而不是选项的id来添加更多选项
因此,您必须执行以下操作:
var-kits=[“乐高WeDo”、“力与运动”、“伯努利升降机”];
var starLabs=[“星座”、“星域”、“月亮”];
功能更改(收音机){
document.getElementById(“selectList”).innerHTML=“”
var select=document.getElementById(“selectList”)
如果(radio.checked&&radio.id==“无线电套件”){
对于(变量i=0;i
套件
星际实验室
var node=document.createElement(“LI”);//创建一个节点
var textnode=document.createTextNode(“水”);//创建一个文本节点
node.appendChild(textnode);//将文本附加到
document.getElementById(“myList”).appendChild(节点);//用id=“myList”将 附加到
这应该对你有所帮助我有点困惑<代码>=是赋值,不是追加。您正在执行
document.getElementById(“items”).innerHTML=kits[i]代码>。所以它当然只会是一个值。最后一个。如果您想要追加,那将是+=
也是一个旁注,不要在这样的循环中重复查找。在循环外部执行查找,将其放入变量中,然后在循环中使用该变量。次要注意,避免内联绑定。改为使用addEventListener()
。可能重复@Taplar添加事件侦听器,如下图所示,您将如何传递所选的kits或starlabs电台var el=document.getElementById(“单选按钮”);el.addEventListener(“单击”,函数(){change()},false)谢谢你,格里戈里·纽特!这也使用了Tapler的建议,即不要通过函数重复循环。我还可以使用以下${x}
<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>
var node = document.createElement("LI"); // Create a <li> node
var textnode = document.createTextNode("Water"); // Create a text node
node.appendChild(textnode); // Append the text to <li>
document.getElementById("myList").appendChild(node); // Append <li> to <ul> with id="myList"