我对这个程序的结果有疑问:当我检查“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>
答案 0 :(得分:3)
在呈现页面后调用document.write()
将完全删除页面。在某些浏览器中,这意味着JavaScript代码本身将停止工作。
您可以尝试的是:
在页面末尾添加<div>
(当然在<body>
内)并为其设置“id”值为“settings”。
更改代码以设置其内容:
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。