我附上了之前代码和之后代码。 该代码是:如果答案正确,则会弹出一个div提示正确第二秒钟;如果答案不正确,则会弹出一个div提示错误第二秒钟。
我决定通过使用函数来隐藏和显示div并使用变量id传递div id来改进代码,并在需要隐藏或取消隐藏div时调用它,就像我在代码的整个过程中一样不断隐藏和隐藏div。
但是由于某些原因,该函数在所有其他div上都起作用,因此在此新代码中接受。分数变量增加,并且分数的内部html只更新“错误”和“正确”的div,然后一秒钟后隐藏。
之前,
function hideCorrectBox(){
document.getElementById("correct").style.display='none';
}
function hideWrongBox(){
document.getElementById("wrong").style.display='none';
}
document.getElementById("box1").onclick=function(){
if(areWePlaying==true){
if(document.getElementById("box1").innerHTML==answer){
document.getElementById("correct").style.display='initial';
setTimeout(hideCorrectBox,1000);
score= score+1;
document.getElementById("scoreValue").innerHTML= score;
newQuestion();
}
else {document.getElementById("wrong").style.display='initial';
setTimeout(hideWrongBox,1000);}
}}
之后
function show(Id){
document.getElementById(Id).style.display="initial";
}
function hide(Id){
document.getElementById(Id).style.display="none";
}
document.getElementById("box1").onclick=function(){
if(areWePlaying==true){
if(document.getElementById("box1").innerHTML==answer){
show("correct");
setTimeout(hide("correct"),1000);
score= score+1;
document.getElementById("scoreValue").innerHTML= score;
newQuestion();
}
else {show("wrong");
setTimeout(hide("wrong"),1000);}
}}
答案 0 :(得分:2)
问题在于以下几行:
setTimeout(hide("correct"),1000);
您必须将函数 引用 传递给setTimeout()
,但是您正在传递函数 调用 >。结果是hide()
被立即调用,而该调用的返回值就是传递给setTimeout()
的值。由于hide
没有返回值,因此正在传递undefined
。
将行更改为:
setTimeout(function(){hide("correct")},1000);
这样您就可以传递匿名函数 声明 ,该函数本身将调用hide
。