无法显示项目的详细信息

时间:2018-01-31 10:08:04

标签: javascript html css



var par = new Array(2);
par.push("Apple");
par.push("Orange");

var nar = new Array("2");
nar.push("red ");
nar.push("dark orange");

var ok = document.getElementById('one').value;

function abc() {
  for (var i = 0; i < par.length; i++) {

    if (par[i] == ok) {
      break;
    }

  }

  document.write(par[i] + " " + "color is  " + " " + nar[i]);


}
&#13;
<!doctype html>
<html>

<head>
</head>

<body>
  <label>Enter the name</label>
  <input type="text" id="one">
  <input type="submit" onclick="abc()" id="on">

</body>

</html>
&#13;
&#13;
&#13;

//在上面的代码片段中,我试图通过在数组中定义所需的细节来显示苹果和橙色的颜色,但在运行代码时,我得到输出为&#34;未定义的颜色未定义&#34;我无法弄清楚代码中的确切问题。

4 个答案:

答案 0 :(得分:1)

在Ist语句中,您使用了var par = new Array(2);这意味着它创建了2个空插槽,然后创建了2个值,因此创建了长度为4的数组。在第二个你使用var par = new Array(“2”);表示ist值s字符串然后是2值,因此创建长度为3的数组。所以你得到错误的结果。使用新的Array()。也可以在abc函数中获取ok的值

 var par =new Array();
            par.push("Apple");
            par.push("Orange");

            var nar= new Array();
            nar.push("red ");
            nar.push("dark orange");

            function abc(){
var ok= document.getElementById('one').value;
        for (var i=0;i<par.length;i++){
            
            if(par[i]==ok){
                break;
            }
        }
        document.write(par[i]+" "+"color is  "+" "+nar[i]);
        }
        <!doctype html>
<html>
    <head>  
    </head>
    <body>
        <label>Enter the name</label>
        <input type="text" id="one">
        <input type="submit" onclick="abc()" id="on">
    </body>
</html> 

答案 1 :(得分:0)

<html>
    <head>  
    </head>
    <body>
        <label>Enter the name</label>
        <input type="text" id="one">
        <input type="submit" onclick="abc()" id="on">
        <script>
        var par =new Array("Apple","Orange");


            var nar= new Array("red ","dark orange");

            var ok= document.getElementById('one').value;

            function abc(){
            for (var i=0;i<par.length;i++){

                if(par[i]==ok){
                    break;
                }
              document.write(par[i]+" "+"color is  "+" "+nar[i]);

            }




            }

        </script>
    </body>
</html> 

答案 2 :(得分:0)

循环结束后代码中的

i,j将为2,bar[2]nar[2]将是未定义的(访问不存在索引的数组元素)

您需要将write命令移动到循环

for (var i = 0; i < par.length; i++) {

    if (par[i] == ok) {
        break;
    }

    document.write(par[i] + " " + "color is  " + " " + nar[i]);

}

答案 3 :(得分:0)

问题是您在ok函数之外定义abc()。在您定义它时(当页面加载时),输入为空。 当您单击提交按钮时,ok仍然是加载时输入的值。 以下应该有效:

        function abc(){

        for (var i=0;i<par.length;i++){
            var ok= document.getElementById('one').value;
            if(par[i]==ok){
                break;
            }
        }
        document.write(par[i]+" "+"color is  "+" "+nar[i]);
        }