下面给出的代码中的javascript函数被调用了两次
My javascript function in the code given below is getting called twice
下面的代码是一个简单的数字猜谜游戏。函数guess()
被调用了两次。我不明白为什么会发生这种事。
<!DOCTYPTE html>
<html>
<head><title>Number Guessing Game version 1.0</title></head>
<body>
<form onsubmit="guess();return false;">
<p><h2>I am your host, human. I am thinking of a number between 0 and 100, including both</h2></p>
<p><input type="text" id="inputId" autocomplete="off"></input><button id="submitButton" onclick="guess()">Guess!!</button></p>
<p><span id="msgId"></span></p>
<p>Guesses Remaining:<span id="guessId"></span></p>
</body>
</form>
<script language="javascript">
var doubleRandom = Math.random();
var guessesLeft = parseInt("10");
var intRandom = Math.round((doubleRandom*100));
var spanObj = document.getElementById("msgId");
var guessObj = document.getElementById("guessId");
guessObj.innerHTML=guessesLeft;
function guess()
{
var guessedNumber = document.getElementById("inputId").value;
alert(23);
if(guessedNumber==null || guessedNumber.trim()==''){
spanObj.innerHTML="Type something, human";
return;
}
if(isNaN(guessedNumber)){
spanObj.innerHTML="That better be a number, Human.";
return;
}else{
if(guessedNumber>100){
spanObj.innerHTML="That better be a number between 0 and 100, Human.";
return;
}else{
spanObj.innerHTML="";
}
}
var accurateAnswer = Math.round(guessedNumber);
var difference = guessedNumber-intRandom;
if(difference>45){
spanObj.innerHTML="That's way too high, Human";
return;
}else if(difference<-45){
spanObj.innerHTML="That's way too low, Human";
}else if(difference<=45 && difference>0){
spanObj.innerHTML="That's high, Human";
}else if(difference>=-45 && difference<0 ){
spanObj.innerHTML="That's low, Human";
}else{
spanObj.innerHTML="Bingo!! You got it!! Refresh to play agin.";
}
if(guessesLeft<=0){
spanObj.innerHTML="You have exhausted your number of guesses. Try again. Refreshing game....";
setTimeout("location.reload(true)", 3000);
}
guessesLeft=guessesLeft-1;
guessObj.innerHTML=guessesLeft;
}
</script>
</html>
这是因为您要调用它两次:一次在按钮的onclick
事件中,一次在窗体的onsubmit
事件中。删除其中一个。
更改
<button id="submitButton" onclick="guess()">Guess!!</button>
至
<input type="submit" id="submitButton" value="Guess!!" />
这样,无论您是单击按钮、点击回车键还是使用其他方法提交表单,您的事件都会触发一次。
当您点击回车按钮时,表单就会提交。在表单提交时,您具有触发功能。
您可以做的是让按钮在单击时提交表单。
<button onclick="form[0].submit()">guess</button>
如果单击按钮,则表单将被提交,因此,在单击按钮时会调用来自提交的函数。这也适用于击打enter。双向功能只触发一次。
相关文章:
- Meteor Router数据函数被调用两次
- Backbone.js ListenToOnce被调用两次
- 为什么DTM数据元素被调用两次
- 模态中的数据关闭在单击时被调用两次
- java-script 函数被调用两次
- rails4-javascript文件需要调用两次才能工作
- javascript点击被调用两次甚至两次以上
- 回调函数在引导模态上调用两次甚至更多次
- 具有超时的地理位置会导致错误处理程序被调用两次
- 如何在同一元素中调用两次onclick
- 调用两次时间更新
- 聚合物元素注册和生命周期(创建和准备调用两次)
- AngularJS自定义过滤器被调用两次
- 为什么 console.log() 被调用两次而不是一次
- Phonegap PushPlugin 消息事件被调用两次
- jquery 使用承诺调用两次动画完成
- .is(“:animated”) 选择器在动画期间返回 true,并调用两次
- 调用两次时 jQuery 偏移量(坐标)的行为不一致
- 为什么单击处理程序被调用两次
- $(document).ready(function(){} jquery被调用两次