我有一个计时器用于我的游戏,但是该消息将继续在法师身上,所以它多次说,我想知道如何让它说出一次。
<head>
<script type="text/javascript">
var c=10;
var t;
var timer_is_on=0;
function timedCount() {
document.getElementById('txt').value = c;
c = c - 1;
if (c == -1||c < -1){
var _message = document.createTextNode("You have mined 1 iron ore!");
document.getElementById('message').appendChild(_message);
startover();
}
}
function startover() {
c = 10;
clearTimeout(t);
timer_is_on=0;
doMining();
}
function doMining() {
if (!timer_is_on) {
timer_is_on = true;
t = setInterval(function () {
timedCount();
}, 1000);
}
}
</script>
<SPAN STYLE="float:left">
<form>
<input type="button" value="Mining" onClick="doMining()">
<input type="text" id="txt">
</form>
</SPAN>
<html>
<center>
<div id='message'></div>
答案 0 :(得分:2)
而不是setInterval
使用window.setTimeout
。
这只会触发一次该功能。
编辑:如果您的意思是希望每次都显示和更新一条消息,请先添加全局计数器:
var mineCount = 0;
然后将代码更改为:
if (c <= -1) {
mineCount++;
var _message = "You have mined " + mineCount + " iron ore" + ((mineCount > 1) ? "s" : "") + "!";
document.getElementById('message').innerHTML = _message;
startover();
}
这将分配元素的内容,而不是每次都添加它。
答案 1 :(得分:0)
您的startOver
函数调用doMining()
。当然,它不应该......?