2

我对这个程序的结果有疑问:当我检查“保护器”、“耳机”、“保护套”和“游戏”时,我应该收到“Kindle”、“诺基亚”和“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>
4

2 回答 2

3

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

您可以尝试的是:

  1. <div>在页面的末尾添加一个(<body>当然是在里面),并给它一个“设置”的“id”值。

  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;
    
于 2013-06-02T16:53:03.527 回答
1

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

于 2013-06-02T17:17:14.050 回答