我刚开始使用javascript而且我遇到了问题。我写了一个脚本,我在其中调用一个函数。我不知道为什么这个脚本会自己调用两次。
代码如下:
<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>
答案 0 :(得分:2)
在表单中添加 action =“#”,以避免在提交表单时刷新页面。
<form action="#">
Enter answer: <input type="text" id="answer" />
<input type="submit" value="Check" onClick="question()" />
</form>
答案 1 :(得分:1)
您可以在启动时window.onload = ask;
调用一次,在question
[编辑]
另请注意,在;
中的第一个alert()
后,您没有question()
[/编辑]
答案 2 :(得分:1)
因为您的按钮是提交按钮。单击时,它运行单击处理程序(如果指定),然后发布表单。所以你打电话给ask()
两次。一次点击处理程序,另一次是window.onload
处理程序。
提交此表单后,页面只是重新加载(因为它没有相关的操作)。而onload
处理程序再次被触发。
您可以在此处查看:http://jsbin.com/ukusof。
答案 3 :(得分:0)
您的表单为method
或action
。当您点击submit
按钮时,页面会自行刷新,从而再次触发ask
。
答案 4 :(得分:0)
您正在提交表单,该表单会再次加载页面,因此在加载时会再次触发ask
。
答案 5 :(得分:0)
您有form
个submit
按钮。如果表单中没有操作,则重新提交页面。您可以使用
<input type="submit" value="Check" onClick="question();return false" />