我在使循环工作时遇到一些麻烦。我正在使用循环将数组值与变量test
的变体匹配。但是,我不确定如何正确地解决这个问题。我正在做一个关于星球大战的测验,并试图通过一个循环(注释掉)来改进原始代码。任何帮助将非常感谢这位业余编码器!
for (i=0; i<2;i++;){
test=document.myForm.elements[i].value;
if (test[i] ==answers[i]){
++corr;
}
else ++incorr;
}
/*test0=document.myForm.elements[0].value;
if (test0.toLowerCase()=="chewbacca"){
++corr;
}
else ++incorr;
test1=document.myForm.elements[1].value;
if (test1.toLowerCase()=="princess leia"){
++corr;
} else ++incorr;
test2=document.myForm.elements[2].value;
if (test2.toLowerCase()=="han solo"){
++corr;
}
else ++incorr;
test3=document.myForm.elements[3].value;
if (test3.toLowerCase()=="rey"){
++corr;
}
else ++incorr; */
location.reload();
alert("You got " + corr/(incorr+corr)*100 + " percent correct!");
}
答案 0 :(得分:3)
for循环中提取的值不是数组,而是一个简单的值,所以不要像数组test[i]
那样尝试访问它。
在比较变量进行严格比较时也使用===
,否则会得到不良结果。
for (var i=0; i<2; i++;) {
test=document.myForm.elements[i].value;
if (test === answers[i]) {
++corr;
}
else ++incorr;
}
注意:为了获得更好的性能,请以严格模式use strict;
运行脚本,这将强制您在使用之前声明所有变量。参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode