如何使用javascript来监控div值的变化?

时间:2011-09-23 06:42:13

标签: javascript

我在DIV中有一个倒计时页面,ID =“count”

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

我到目前为止已经开始了

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

但我不知道如何“倾听”div的改变

任何人都可以帮助我吗?

顺便说一句:它需要是纯粹的javascript,没有像jquery这样的东西。

更新

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

4 个答案:

答案 0 :(得分:2)

据推测,您有一个基于 setInterval setTimeout 运行的函数。当函数变为零时,让该函数调用你的函数。

如果你不能这样做,你可以尝试优化轮询 - 使用 setInterval 读取值,估计它可能接近零,再次检查并估计它何时可能为零,等等当它为零时,做你的事。

有DOM突变事件,但它们已被弃用,无论如何都从未得到很好的支持。此外,当内容发生变化时,它们会被调用,因此对于您的场景来说可能太频繁了。

答案 1 :(得分:1)

如果您要自己更改 #count 的值,请从该位置调出警报。如果不使用:

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

<强>更新 要清除该间隔:

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

答案 2 :(得分:0)

监视这个的唯一有效方法是转到实际更改div的代码并修改它或挂钩它以在更新div的内容时调用你的函数。 div的内容随时改变,没有通用的通知机制。考虑修改变更的来源,您将获得更多成功。

除了更改源之外,我知道的唯一选项是使用间隔计时器来“轮询”div的内容,以便在更改时注意到。但是,这非常低效,并且在注意到实际变化时总会有一些固有的延迟。电池续航时间(笔记本电脑或智能手机)不断运行也是不利的。

答案 3 :(得分:0)

您不会听div进行更改。 div只是用于直观表示程序的状态。

相反,在任何计时事件倒数的情况下,使用诸如......的条件

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