2011-09-23 66 views
0

我有一个页面,在ID为“count”的DIV中倒计时如何使用JavaScript来监控div值的变化?

我想监视这个div值,当它达到0时,会弹出一个警报。

我已经戈诺只要

if(parseInt(document.getElementById('count').innerHTML) < 2){} 

但我不知道该怎么“听”为DIV改变

谁能帮助我?

顺便说一句:它需要在纯粹的JavaScript,没有jQuery的东西。

更新:

我在原始代码中没有这么说。这是一个外部页面,我试图在地址栏中运行此代码

+1

通过什么手段,你改变'#count'的价值? –

+0

而不是在'DIV'中侦听更改,最好是在倒计时脚本中监听_stopping倒计时_。 –

回答

1

如果您要更改#count的值,则请调用该地点的警报。如果不使用:

window.setInterval(function(){ 
    if(parseInt(document.getElementById('count').innerHTML) < 2) alert('Alarm!'); 
},1000); // 1s interval 

UPDATE 要清除该时间间隔:

var timer = window.setInterval(function(){ 
    if(parseInt(document.getElementById('count').innerHTML) < 2) { 
     alert('Alarm!'); 
     window.clearInterval(timer); 
    } 
},1000); // 1s interval 

//or by using non-anonymous function 

function check(){ 
if(parseInt(document.getElementById('count').innerHTML) < 2) { 
    alert('Alarm!'); 
    window.clearInterval(timer); 
} 
} 

var timer = window.setInterval(check,1000); 
+0

同样取消超时也是件好事,否则代码会每秒都会弹出警报(或者您的意图是......)。 – RobG

+0

你说得对。刚刚更新。 –

2

想必你有一个函数运行基于的setInterval的setTimeout。当该函数变为零时,调用你的函数。

如果你不能做到这一点,你可以尝试优化轮询 - 使用的setInterval读取值,估计当它可能是接近零,再次检查和评估时它可能是零,等等。当它是零,做你的事。

有DOM突变事件,但他们已被取消,从来没有得到很好的或广泛反正支持。另外,它们在内容变化时被调用,因此对于您的场景而言可能太频繁。

0

的唯一有效的方法来监视这个是去,实际上是改变DIV的代码并修改它或把它挂到你调用一个函数时,它更新div的内容。任何时候div变化的内容都没有通用的通知机制。您将更加成功地研究修改变更的来源。

我知道除了变化的源唯一的选择将使用间隔定时器到“人头”的div内容时,它已经改变了注意。但是,这是非常低效的,并且在注意到实际变化时总会有一些固有的延迟。电池寿命(笔记本电脑或智能手机)连续运行也不好。

0

你不听为div改变。 div就是为了直观表示程序的状态。

相反,内无论定时事件掰着指头数,使用条件,如...

if (i < 2) { 
    // ... 
} 
+0

实际上,我试过了,但它很快冻结了页面。 – Javascriptnoob