Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图以html格式将数组项传递给getElementById()选择选项_Javascript_Arrays - Fatal编程技术网

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)${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
    &nbsp;&nbsp;
    <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"