2016-11-20 90 views
-5

所以,我开始这个项目的学校;我是一个JavaScript的初学者,你可以从代码中看到,我有点卡住了。首先,我想做一个测验,你必须介绍你想回答的问题的数量,然后回答他们。一开始我选择了7个随机答案来测试它。问题是,当我引入3个或更少的问题来回答它工作正常,但是当我去更多(+3 < = 7)我得到一个奇怪的错误:index.html?fname = 3:103未捕获TypeError:无法读取属性'检查'未定义(...)。这里是我的代码:Javascript/Html复选框错误

My code

对不起了distrubing你我的愚蠢!祝你今天愉快! PS:我忘了提及这段代码没有完成(我仍然需要设计它),所以不要评论我。

+0

Hello Ciocirlan,欢迎来到StackOverflow。请提供相关代码以及您的问题的摘录。外部链接中的代码可能会过期,从而导致线程对于其他具有类似问题的Stack用户无用。干杯 –

+0

我刚开始使用Stack,我知道,我的坏。我将学习这个网站是如何工作的。 –

回答

0

在代码的第68行,您将y设置为用户请求的问题数量。

y=document.getElementById("myForm").elements[0].value; 

这个循环(上线102开始)是在错误是来自:

for(var i=0; i<y; i++){ 
    if(choices[i].checked){ 
     choice = choices[i].value; 
    } 
} 

这里发生的事情:如果你问4个问题,这个循环将继续运行,只要i小于4.当i为3时,if语句将尝试访问choices[3].checked。请记住,choices[3]实际上是数组中的第4项,因为索引从0开始。每个问题只有3个选择,因此当您询问第4个时,您会得到undefined

但是,您希望此循环针对每个问题查看3个且只有3个答案,无论总共有多少个问题。你可能想写的是这样的:

for(var i=0; i<3; i++){ 
    if(choices[i].checked){ 
     choice = choices[i].value; 
    } 
}