Javascript 函数调用自身重复
我刚刚开始使用javascript,我面临一个问题。我编写了一个脚本,在其中调用函数。我不知道为什么这个脚本会两次调用自己 代码如下:Javascript 函数调用自身重复,javascript,javascript-events,function-calls,Javascript,Javascript Events,Function Calls,我刚刚开始使用javascript,我面临一个问题。我编写了一个脚本,在其中调用函数。我不知道为什么这个脚本会两次调用自己 代码如下: <html> <head> <script type="text/javascript"> var randomNo1 = Math.floor(Math.random()*10); var randomNo2 = Math.floor(Math.random()*10); window.onload = ask; f
<html>
<head>
<script type="text/javascript">
var randomNo1 = Math.floor(Math.random()*10);
var randomNo2 = Math.floor(Math.random()*10);
window.onload = ask;
function ask()
{
alert("How much " + randomNo1 + " times " + randomNo2 + "?");
}
function question()
{
var product = randomNo1 * randomNo2;
var stdAnswer = document.getElementById('answer').value;
if(stdAnswer == product)
{
alert("Very good!")
//generate new nos
randomNo1 = Math.floor(Math.random()*10);
randomNo2 = Math.floor(Math.random()*10);
ask();
}
else
{
alert("No. Please try again.");
ask();
}
}
</script>
</head>
<body>
<form>
Enter answer: <input type="text" id="answer" />
<input type="submit" value="Check" onClick="question()" />
</form>
</body>
</html>
var randomNo1=Math.floor(Math.random()*10);
var randomNo2=Math.floor(Math.random()*10);
window.onload=询问;
函数ask()
{
警报(“多少次”+randomNo1+“次数”+randomNo2+“?”);
}
函数问题()
{
var乘积=随机数1*随机数2;
var stdAnswer=document.getElementById('answer').value;
if(stdAnswer==产品)
{
警惕(“非常好!”)
//生成新编号
randomNo1=Math.floor(Math.random()*10);
randomNo2=数学地板(数学随机()*10);
问();
}
其他的
{
警告(“否,请重试”);
问();
}
}
输入答案:
您调用它两次,一次在启动时调用window.onload=ask代码>和问题中的一次
[编辑]
还要注意,您没有在question()
[/edit]你调用它两次,一次在启动时调用window.onload=ask代码>和问题中的一次
[编辑]
还要注意,您没有在question()
[/edit]您的表单没有方法
也没有操作
。当您单击submit
按钮时,页面会自动刷新,从而再次触发ask
。您的表单将不作为方法
或操作
。当您单击submit
按钮时,页面会自动刷新,从而再次触发ask
。您正在提交表单,表单将再次加载页面,因此ask
将在加载时再次触发。您正在提交表单,表单将再次加载页面,因此,加载时将再次触发ask
。因为您的按钮是提交按钮。单击时,它运行单击处理程序(如果指定),然后发布表单。因此,您需要调用两次ask()
。一次在单击处理程序中,另一次在窗口中。onload
处理程序
提交此表单后,页面只需重新加载(因为它没有关联的操作)。然后再次启动onload
处理程序
您可以在这里看到: 因为您的按钮是提交按钮。单击时,它运行单击处理程序(如果指定),然后发布表单。因此,您需要调用两次ask()
。一次在单击处理程序中,另一次在窗口中。onload
处理程序
提交此表单后,页面只需重新加载(因为它没有关联的操作)。然后再次启动onload
处理程序
您可以在这里看到: 将action=“#”添加到表单中,以避免在提交表单时刷新页面
<form action="#">
Enter answer: <input type="text" id="answer" />
<input type="submit" value="Check" onClick="question()" />
</form>
输入答案:
将操作=“#”添加到表单中,以避免在提交表单时刷新页面
<form action="#">
Enter answer: <input type="text" id="answer" />
<input type="submit" value="Check" onClick="question()" />
</form>
输入答案:
您有一个带有提交
按钮的表单
。如果表单中没有任何操作,它将重新提交页面。你可以停止这一切
<input type="submit" value="Check" onClick="question();return false" />
您有一个带有提交
按钮的表单
。如果表单中没有任何操作,它将重新提交页面。你可以停止这一切
<input type="submit" value="Check" onClick="question();return false" />
如果我犯了错误,请指出。什么叫“自己打两次电话”?这是如何体现的?单击表单上的“检查”按钮时,函数“ask()”会被调用两次。因为在windows上也会调用ask。onload?函数对我来说只触发一次:ask
请指出我是否犯了一些错误。什么叫“自己调用两次”?这是如何体现的?当单击表单上的“检查”按钮时,函数“ask()”会被调用两次。因为ask在windows.onload上也会被调用?我认为ask
函数只会触发一次:我认为“window.onload=ask;”只会在第一次加载时调用该函数。不是吗?缺少分号根本不是问题。我认为“window.onload=ask;”只会在第一次加载时调用函数。不是吗?缺少分号根本不是问题。好的,我理解在这个场景中由“提交”引起的问题。非常感谢。action=“#”
将表单提交给自身,这会导致相同的现象。页面已刷新。您需要取消表单提交。好的,我理解此场景中“提交”导致的问题。非常感谢。action=“#”
将表单提交给自身,这会导致相同的现象。页面已刷新。您需要取消表单提交。