一旦javascript函数重新启动,如何显示消息?

时间:2011-02-22 20:26:03

标签: javascript-events game-development

我想知道每次定时器重启时如何发送消息。到目前为止,这是我的代码:

<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 == 0)
        c = 10;

}

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>

2 个答案:

答案 0 :(得分:0)

2个简单的步骤:

  1. 为您的消息创建一个展示位置(即另一个网络元素)
  2. 在您的条件中,当您的计数器达到0时,更新消息元素的值
  3. 以下是一个例子:

    <div id='message'></div>
    

    然后,访问该元素并附加您的消息或使用DOM遍历修改您的方法(最好使用dojojquery之类的javascript框架,但您也可以手动执行此操作:

    if (c == 0) { 
        var _message = document.createTextNode("Timer has finished!");
        document.getElementById('message').appendChild(_message); 
        c = 10;
    }
    

    另外,请勿在表单周围放置 SPAN 。试试一个“div”。 Span用于样式化内联文档元素。

    编辑:我假设当你说“重新开始”时你的意思是当c = 0或计时器已经运行了10次。当它“重新开始”时也意味着当定时器重新调用该方法时(即每1秒,在这种情况下,你只需将更新代码放在函数的顶部)

答案 1 :(得分:0)

您已经在“if(c == 0)”中捕获此事件。只需添加您需要的额外代码吗?

您需要更好地定义重新开始的意义。尝试将其拉出到自己的方法中,以便您可以单独使用它。

<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 == 0) 
        startOver();
}

function startOver() {
    alert("Starting Over, Fool!");
    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>