2011-02-22 32 views
0

我想知道如何在每次计时器重新开始时输入消息。这里是我的代码至今:JavaScript函数重新启动后,您如何显示消息?

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

回答

0

两个简单的步骤:

  1. 您的信息展现出来创建一个地方(即其他网络元素)
  2. 在你的条件,当你的计数器达到0时,更新该消息元素的值

下面是一个例子:

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

然后,访问该元件并附加消息或使用DOM遍历(优选使用一个JavaScript框架如dojojquery但也可以做到这一点手动地)修改方法:

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

另外,不要t将SPAN放在表格的周围。尝试一个“div”来代替。 Span是用于设计线型文档元素的样式。

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

+0

好的,谢谢:D生病尝试一下,感谢提示 – Mason 2011-02-23 06:25:09

+0

OK:P我想这一点,计时器无法启动 – Mason 2011-02-23 06:30:02

+0

哦,变 “的appendChild(TXT)” 到 “使用appendChild(_message)”。我的错。 – 2011-02-23 07:14:53

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> 
相关问题