Javascript 程序在出错后正确运行了两次
在两次输入正确答案后,任何后续尝试(即使再次输入正确答案)都会显示“重试”输出。是什么导致了这种奇怪的行为Javascript 程序在出错后正确运行了两次,javascript,Javascript,在两次输入正确答案后,任何后续尝试(即使再次输入正确答案)都会显示“重试”输出。是什么导致了这种奇怪的行为 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var answer;
var firstNum;
var secondNum;
var check = true;
question();
function question() {
firstNum = Math.floor(Math.random() * 101);
secondNum = Math.floor(Math.random() * 101);
answer = firstNum * secondNum;
document.writeln("<h1>How much is " + firstNum + " times " + secondNum + "</h1>");
document.writeln(answer);
document.write('<input name="inputAnswer" type="text" id="inputAns"/>');
document.write('<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>');
}
function validate() {
if (document.getElementById("inputAns").value == answer) {
document.write("Good");
check = true;
result();
} else {
check = false;
document.write("try again");
result();
}
}
function result() {
if (check == true)
question();
else {
document.writeln("<h1>How much is " + firstNum + " times " + secondNum + "</h1>");
document.writeln(answer);
document.write('<input name="inputAnswer" type="text" id="inputAns"/>');
document.write('<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>');
}
}
</script>
</head>
<body></body>
</html>
无标题文件
var回答;
var-firstNum;
var-secondNum;
var检查=真;
问题();
函数问题(){
firstNum=Math.floor(Math.random()*101);
secondNum=Math.floor(Math.random()*101);
答案=firstNum*secondNum;
document.writeln(“多少是“+firstNum+”乘以“+secondNum+”);
书面文件(答复);
文件。写(“”);
文件。写(“”);
}
函数验证(){
if(document.getElementById(“inputAns”).value==answer){
文件。书写(“良好”);
检查=正确;
结果();
}否则{
检查=错误;
文档。写入(“重试”);
结果();
}
}
函数结果(){
如果(检查==true)
问题();
否则{
document.writeln(“多少是“+firstNum+”乘以“+secondNum+”);
书面文件(答复);
文件。写(“”);
文件。写(“”);
}
}
发生这种情况是因为您使用id=“inputAns”
重复创建元素。不允许两个元素具有相同的id
还请注意:
- 如果在第一个输入框中键入数字,则输出(良好/重试)正确。这是由
的工作方式造成的document.getElementByID
- 单击哪个“提交答案”无关紧要——它们都做相同的事情(
)validate()
id=“inputAns”
重复创建元素。不允许两个元素具有相同的id
还请注意:
- 如果在第一个输入框中键入数字,则输出(良好/重试)正确。这是由
的工作方式造成的document.getElementByID
- 单击哪个“提交答案”无关紧要——它们都做相同的事情(
)validate()
- 我有一种类似的解决方案,但方式不同。试试看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<h1>How much is <span id="firstnumber"></span> times <span id="secondnumber"></span></h1>
answer
<input name="inputAnswer" type="text" id="inputAns"/>
<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>
<span id="answer"></span>
<script type = "text/javascript">
var answer;
var firstNum;
var secondNum;
var check= true;
var count=0;
question();
function question()
{
firstNum= Math.floor(Math.random()*101);
secondNum= Math.floor(Math.random()*101);
answer = firstNum * secondNum;
document.getElementById("firstnumber").innerHTML=firstNum;
document.getElementById("secondnumber").innerHTML=secondNum;
}
function validate()
{
if(document.getElementById("inputAns").value == answer)
{
check= true;
}
else
{
check= false;
}
result();
}
function result()
{
if(check== true)
{
document.getElementById("answer").innerHTML="correct answer"
count=count+1;
}
else
{
document.getElementById("answer").innerHTML="wrong answer.<br>you've corrected total "+count+" questions.";
}
document.getElementById("inputAns").value="";
question();
}
</script>
无标题文件
一次多少钱
回答
var回答;
var-firstNum;
var-secondNum;
var检查=真;
var计数=0;
问题();
函数问题()
{
firstNum=Math.floor(Math.random()*101);
secondNum=Math.floor(Math.random()*101);
答案=firstNum*secondNum;
document.getElementById(“firstnumber”).innerHTML=firstNum;
document.getElementById(“secondnumber”).innerHTML=secondNum;
}
函数验证()
{
if(document.getElementById(“inputAns”).value==answer)
{
检查=正确;
}
其他的
{
检查=错误;
}
结果();
}
函数结果()
{
如果(检查==true)
{
document.getElementById(“答案”).innerHTML=“正确答案”
计数=计数+1;
}
其他的
{
document.getElementById(“answer”).innerHTML=“回答错误。
您已更正了总计“+count+”个问题。”;
}
document.getElementById(“inputAns”).value=“”;
问题();
}
我有一种类似的解决方案,但方式不同。试试看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<h1>How much is <span id="firstnumber"></span> times <span id="secondnumber"></span></h1>
answer
<input name="inputAnswer" type="text" id="inputAns"/>
<input name="submitBtn" type="submit" value="Submit Answer" onclick="validate()"/>
<span id="answer"></span>
<script type = "text/javascript">
var answer;
var firstNum;
var secondNum;
var check= true;
var count=0;
question();
function question()
{
firstNum= Math.floor(Math.random()*101);
secondNum= Math.floor(Math.random()*101);
answer = firstNum * secondNum;
document.getElementById("firstnumber").innerHTML=firstNum;
document.getElementById("secondnumber").innerHTML=secondNum;
}
function validate()
{
if(document.getElementById("inputAns").value == answer)
{
check= true;
}
else
{
check= false;
}
result();
}
function result()
{
if(check== true)
{
document.getElementById("answer").innerHTML="correct answer"
count=count+1;
}
else
{
document.getElementById("answer").innerHTML="wrong answer.<br>you've corrected total "+count+" questions.";
}
document.getElementById("inputAns").value="";
question();
}
</script>
无标题文件
一次多少钱
回答
var回答;
var-firstNum;
var-secondNum;
var检查=真;
var计数=0;
问题();
函数问题()
{
firstNum=Math.floor(Math.random()*101);
secondNum=Math.floor(Math.random()*101);
答案=firstNum*secondNum;
document.getElementById(“firstnumber”).innerHTML=firstNum;
document.getElementById(“secondnumber”).innerHTML=secondNum;
}
函数验证()
{
if(document.getElementById(“inputAns”).value==answer)
{
检查=正确;
}
其他的
{
检查=错误;
}
结果();
}
函数结果()
{
如果(检查==true)
{
document.getElementById(“答案”).innerHTML=“正确答案”
计数=计数+1;
}
其他的
{
document.getElementById(“answer”).innerHTML=“回答错误。
您已更正了总计“+count+”个问题。”;
}
document.getElementById(“inputAns”).value=“”;
问题();
}
BTW您从哪里学习JS?这不是大多数网络应用程序的结构document.write
很少在实践中使用。更常见的是使用document.createElement
创建元素,并使用some\u元素向元素添加行为。addEventListener
@Kos,听起来像是家庭作业。顺便问一下,你从哪里学JS?这不是大多数网络应用程序的结构document.write
很少在实践中使用。更常见的是使用document.createElement
创建元素,并使用some\u元素向元素添加行为。addEventListener
@Kos,听起来像是家庭作业