Javascript上的程序无法正常工作

时间:2013-06-02 16:46:57

标签: javascript html arrays for-loop

我对这个程序的结果有疑问:当我检查“Protector”,“Headset”,“Case”和“Games”时,我应该收到“Kindle”,“Nokia”和“Wii”。但是,我只收到一个值 - “Kindle”(这是在Google Chrome和Internet Explorer中)。另外,我收到了Opera中的所有值(也是重复的)。 你能帮我解决这些问题吗? 提前谢谢。

<html>
<head>
<script type="text/javascript">

function product(){ 
    var checkboxes = document.getElementsByName('checkboxes');
    var i=0;
    var j=0;
    var tech = [
    ["Kindle","Protector"],
    ["Iphone","Headset"],
    ["Iphone","US Charger"],
    ["Iphone","USB cable"],
    ["Iphone","Case"],
    ["Nokia","Protector"],
    ["Nokia","Headset"],
    ["Nokia","Case"],
    ["Wii","Games"]
    ];

    for (i=0 ; i < tech.length; i++){
        for(j=0 ; j< checkboxes.length; j++){
            if ((tech[i][1] == checkboxes[j].value)&&(checkboxes[j].checked)){
            document.write(tech[i][0]);
            document.write("<br>");
            }
        }
    }
}
</script>
</head>

<body>

<form name="Accessories">
<input type="checkbox" name="checkboxes" value="Protector"> Protector <br>
<input type="checkbox" name="checkboxes" value="Headset"> Headset <br>
<input type="checkbox" name="checkboxes" value="US Charger"> US Charger <br>
<input type="checkbox" name="checkboxes" value="USB cable"> USB cable <br>
<input type="checkbox" name="checkboxes" value="Case"> Case <br>
<input type="checkbox" name="checkboxes" value="Games"> Games </br>
<input type="button" name="Check" onClick="product()" value="Search a product">
</form>

</body>
</html>

2 个答案:

答案 0 :(得分:3)

在呈现页面后调用document.write()将完全删除页面。在某些浏览器中,这意味着JavaScript代码本身将停止工作。

您可以尝试的是:

  1. 在页面末尾添加<div>(当然在<body>内)并为其设置“id”值为“settings”。

  2. 更改代码以设置其内容:

    var content = "";
    for (i=0 ; i < tech.length; i++){
        for(j=0 ; j< checkboxes.length; j++){
            if ((tech[i][1] == checkboxes[j].value)&&(checkboxes[j].checked)){
              content += tech[i][0] + '<br>';
            }
        }
    }
    document.getElementById("settings").innerHTML = content;
    

答案 1 :(得分:1)

当您使用document.write()时,您的表单元素不再存在,因此您的复选框数组将不会出现。这就是为什么你只是'点燃'的原因。尝试使用console.log(tech [i] [0])代替并在chrome中运行它。你应该得到:Kindle,Iphone,Iphone,诺基亚,诺基亚,诺基亚,Wii。