2016-03-02 62 views
0
var myVar = uncontrollableNumber; 
$("#myButton").click(function(){ 

    myVar++; 

}); 

有没有一种方法可以检查“如果myVar在20中没有改变(可以上或下,代码只是一个例子)秒,做点什么,如果它改变了,重新开始倒计时“?我试过一些代码但失败了。Javascript检查一段时间内是否发生了一些事情

function myFunction(myVar){ 
    var oldMyVar = myVar; 
    while(oldMyVar === myVar){ 
     var countdownDone = false; 
     //countdown then run function 
     countdownDone = true; 
    } 
if(!countdownDone){ 
    myFunction(); 
} 
+0

您是否尝试过'的setTimeout()'?你想在瞬间变化时做点什么,或者在20秒后做点什么,如果这一点与原来的不同? – nnnnnn

+0

@nnnnnn我仍然是一个代码noob,但根据我的经验,我找不到有效的方法**如果变量改变重新开始倒计时。 – fetus

回答

0

这里是你working JS fiddle

还加入了代码片段

var myVar = 0; 
 
var oldVar = 0; 
 
$("#myButton").click(function(){ 
 
    myVar++; 
 
}); 
 

 
setInterval(function(){ 
 
    checkForChanges(); // after every 2 secs check 
 
    oldVar = myVar; // reset the old value now to the new one, so during next check we should have our myVar changed. 
 
},2000); 
 

 
function checkForChanges(){ 
 
    if(oldVar === myVar){ 
 
    $('#response').append('same value nothing has changed!!'+'<br/>'); 
 
    //alert('same value nothing has changed!!'); 
 
    } 
 
    else{ 
 
    $('#response').append('The value changed!!'+'<br/>'); 
 
    //alert('The value changed!!'); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="myButton"> 
 
click Me For Change!! 
 
</button> 
 

 
<div id="response"> 
 

 
</div>

+1

我的编码水平简单易懂。谢谢! – fetus

1

为了开火变量变化的情况下,你应该使用

object.watch 

有关详情请参阅 - Listening for variable changes in JavaScript or jQuery

+0

还提到[__Browser兼容性___](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch#Browser_compatibility) – Rayon

+0

用户这看起来很神奇,我会更多地看它可能会在我完成后实现,但我太白痴,不理解所有陈述的概念。而且,正如评论上面说的,它似乎只适用于Firefox,所以这是一个不可能的事情。感谢您的关注。 – fetus

+0

是的,你是正确的。如果它旨在支持跨浏览器支持,上面不是信任的解决方案。 – user2947

相关问题