Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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
将选项输出到select的小javascript不起作用_Javascript_Php_Html - Fatal编程技术网

将选项输出到select的小javascript不起作用

将选项输出到select的小javascript不起作用,javascript,php,html,Javascript,Php,Html,我正在制作一个小网页。目标很简单。我有一个选择与几个选项;这是行星名称;它们的大小放在每个选项的值括号中。我想做的是,在选择一个选项(一个星球)时,javascript代码将采用该选项的大小,并为另一个选择括号提供新选项。因此,根据第一个选择,第二个选择括号将提供新选项 这段代码很简单,我已经看过了,但没有错误 我就是不明白什么不起作用。代码如下: <select id="selectedplanet" name="selectedplanet" onchange="jcab3();"&g

我正在制作一个小网页。目标很简单。我有一个选择与几个选项;这是行星名称;它们的大小放在每个选项的值括号中。我想做的是,在选择一个选项(一个星球)时,javascript代码将采用该选项的大小,并为另一个选择括号提供新选项。因此,根据第一个选择,第二个选择括号将提供新选项

这段代码很简单,我已经看过了,但没有错误

我就是不明白什么不起作用。代码如下:

<select id="selectedplanet" name="selectedplanet" onchange="jcab3();">

<?php 
while($fetch28a3=mysqli_fetch_array($query28a3)){
echo('<option value="'.$fetch28a3[1].'">'.$fetch28a3[0].'</option>');
}?>
</select><br/>
<p>Location: </p><br/><br/><p>X:</p><select id="locationx" name="locationX"></select><br/><p>Y:</p><select id="locationy" name="locationY"></select>


土
火星
木星
X:


Y:

document.getElementById(“myplanet”).addEventListener('change',function(){ var e=document.getElementById(“myplanet”); var value=e.options[e.selectedIndex].value; var prima=parseInt(值) var final2=“”; var final3=“”; 对于(i31=0;i31您在
中添加了多少新的
标记

想想@Michael Bogwardt在评论中所说的:

但是,使用innerHTML的DOM操作速度较慢,而且更复杂 与基于单个DOM对象的操作相比,更容易发生故障

最好使用
元素.appendChild()
元素.setAttribute()
函数创建
s标记。您的代码可能如下所示:

function jcab3(){
   var prima=parseInt(document.getElementById("selectedplanet").value);

   var x = document.getElementById("locationx");
   var y = document.getElementById("locationy");

   for(i31=0;i31<prima;i31++){

     var option = x.appendChild("OPTION");
     option.setAttribute("value", i31); 

   }

   for(i32=0;i32<prima;i32++){

     var option = y.appendChild("OPTION");
     option.setAttribute("value", i32); 

   }    
}
函数jcab3(){
var prima=parseInt(document.getElementById(“selectedplanet”).value);
var x=document.getElementById(“locationx”);
var y=document.getElementById(“locationy”);

对于(i31=0;i31非常感谢您的帮助,但我从未学习过jquery…我认为javascript足以满足我的需要。我已经编辑了我的答案。现在它只使用javascript,不使用jquery。如果有用,请您投票给我的答案好吗谢谢。我已经投票给了您的答案。我将查看这两个答案,并决定哪一个是我最喜欢的。但是又是脚踝
<!DOCTYPE html>
<html>
<head>

</head>
<body>
<select id="myplanet">
    <option value="4">Earth</option>
    <option value="5">Mars</option>
    <option  value="6">JUpiter</option>
</select>

<p>X:</p>
<select id="locationx" name="locationX"></select><br/>
<p>Y:</p>
<select id="locationy" name="locationY"></select>

<script>

  document.getElementById("myplanet").addEventListener('change', function(){
  var e = document.getElementById("myplanet");
var value = e.options[e.selectedIndex].value;
    var prima =  parseInt( value )
    var final2="";
    var final3="";
    for(i31=0;i31<prima;i31++){
       final2=final2+'<option value="'+i31+'">'+i31+'</option>';

    }
    for(i32=0;i32<prima;i32++){
        final3=final3+'<option value="'+i32+'">'+i32+'</option>';
    }

    document.getElementById("locationx").innerHTML = final2
    document.getElementById("locationy").innerHTML = final3


  })

</script>
</body>
</html>
function jcab3(){
   var prima=parseInt(document.getElementById("selectedplanet").value);

   var x = document.getElementById("locationx");
   var y = document.getElementById("locationy");

   for(i31=0;i31<prima;i31++){

     var option = x.appendChild("OPTION");
     option.setAttribute("value", i31); 

   }

   for(i32=0;i32<prima;i32++){

     var option = y.appendChild("OPTION");
     option.setAttribute("value", i32); 

   }    
}