2015-12-30 58 views
3

我有一些麻烦的循环工作循环的变量。我正在使用循环来将数组值与变量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!"); 
} 

回答

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