Javascript 为什么当我为不同的条件放置了不同的if语句时,只有一个if语句输出?

Javascript 为什么当我为不同的条件放置了不同的if语句时,只有一个if语句输出?,javascript,html,function,if-statement,submit-button,Javascript,Html,Function,If Statement,Submit Button,我编写了一个有一些简单数学问题的代码。当用户按下submit时,if语句将确定文本框是否为空或是否有一些输入。我放了一个if语句,如果用户的问题是正确的,它就会记录下来。写正确,如果它是空的,它将写不回答等等。相反,无论文本框是否为空或他们的答案是否错误,它都会输出正确的结果。我知道那个document.write不受欢迎,但我是个初学者,所以请帮助我 document.getElementById(“q1”); 文件getElementById(“q2”); 文件.getElementByI

我编写了一个有一些简单数学问题的代码。当用户按下submit时,if语句将确定文本框是否为空或是否有一些输入。我放了一个if语句,如果用户的问题是正确的,它就会记录下来。写正确,如果它是空的,它将写不回答等等。相反,无论文本框是否为空或他们的答案是否错误,它都会输出正确的结果。我知道那个document.write不受欢迎,但我是个初学者,所以请帮助我

document.getElementById(“q1”);
文件getElementById(“q2”);
文件.getElementById(“q3”);
文件.getElementById(“q4”);
文件.getElementById(“a1”);
文件.getElementById(“a2”);
文件.getElementById(“a3”);
文件.getElementById(“a4”);
文件.getElementById(“提交”);
函数检查(){
如果((q1.value==6084)| |(q1.value==6084)){
文件。写入(“+”1.更正“+”);
}else if(q1.value.length==0){
文件。写(“+”1.未回答“+”);
}
否则{
document.write(“+”1.不正确的“+”);
}
}

Quiz1

数学测试Bergi对这个问题的评论找到了这个问题的根本原因,所以我将尝试帮助解决这个问题

首先,如果所有这些答案都是数字,你应该使用。这将阻止用户输入非数字字符,这意味着您只需担心
6084
而不必担心
6084
,因此您可以继续删除
| |(q1.value==6084)

其次,我没有看到您在任何地方分配变量
q1
。是否要将
document.getElementById(“a1”)
的结果分配给变量
q1
?如果您这样做了,那么您需要通过写入
constq1=document.getElementById(“a1”)
来分配它。如果仍然不起作用,请将
console.log(q1)
放在
check
函数的第一行,查看您正在使用的是什么


或者,如果希望保持ID和变量名相同。使用
const a1=document.getElementById(“a1”)
,然后将
check
函数中对
q1
的所有引用更改为
a1

尝试此代码

您需要检查表单中提供的数据是否有效,并计算用户正确给出了多少答案

函数检查(){
var a1=document.getElementById(“a1”).value;
var a2=document.getElementById(“a2”).value;
var a3=document.getElementById(“a3”).value;
var a4=document.getElementById(“a4”).value;
如果(isNaN(a1)| a1==“”){
警报(“请回答问题1或输入数字值”);
}else if(isNaN(a2)| a2==“”){
警报(“请回答问题2或输入数字值”);
}else if(isNaN(a3)| a3==“”){
警报(“请回答问题3或输入数字值”);
}else if(isNaN(a4)| a4==“”){
警报(“请回答问题4或输入数字值”);
}否则{
让计数=0;
如果(a1==6084){
计数++;
}
如果(a2==61.66){
计数++;
}
如果(a3==210){
计数++;
}
如果(a4==77){
计数++;
}
记录。写下(“你有“+count+”四个问题中的正确答案”)
}
}

Quiz1

数学测试,因为
6084
不是有效数字。相反,它被解释为逗号运算符,基本上执行始终通过的
if(084)
。为了补充@Bergi所说的内容,您可以使用
.value()
返回一个字符串,因此您应该在“6084”和“6084”周围使用
“@Bergi那么如果我还想用6084我该怎么做呢?@Love2Code引用它-如果你想把它当作一个字符串,就让它看起来像一个字符串。好了,现在我用的是
if((q1.value==“6084”)|(q1.value==“6084”){document.write(“+”1.Correct“+”)}否则如果(q1.value==null){document.write(“+”1.Not response“+”)}”else{document.write(“+”1.不正确的“+”);}
@Idtcoop我现在已经将它更新为这个
const q1=document.getElementById(“q1”);函数检查(){if(q1.value==“6084”){document.write(“+”1.更正“+”);}else if(q1.value==null){document.write(“+”1.未回答“+”);}else{document.write(“+”1.不正确“+”);}
它仍然只是输出未回答。我仍然拥有文档的其余部分。getElementById的,但是没有足够的空间将它们放在这个评论中。我的错误。您需要将变量
q1
分配给
document.getElementById(“a1”)
,如下所示:
const q1=document.getElementById(“a1”)。这将获得
输入的值,而不是带有问题的标题。我编辑了我的答案以反映这一点。