【问题标题】:How do you display a message once a JavaScript function restarts?JavaScript 函数重新启动后如何显示消息?
【发布时间】:2011-02-22 20:26:02
【问题描述】:

我想知道每次计时器重新开始时如何输入消息。到目前为止,这是我的代码:

<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>

【问题讨论】:

    标签: javascript dom-events


    【解决方案1】:

    两个简单的步骤:

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

    这是一个例子:

    <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 秒,在这种情况下,您只需将更新代码放在函数的顶部)

    【讨论】:

    • 哦,把“appendChild(txt)”改成“appendChild(_message)”。我的错。
    • 非常感谢 :D 现在只有 1 块拼图要解决,我的游戏已经完成 :)
    【解决方案2】:

    您已经在“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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 2012-03-23
      • 2016-10-27
      • 2018-05-25
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2021-12-10
      相关资源
      最近更新 更多