gpt4 book ai didi

javascript - 使用 jQuery 检测计时器变量的变化

转载 作者:行者123 更新时间:2023-11-30 11:51:56 24 4
gpt4 key购买 nike

我有某些每秒更新一次的计时器。我想在定时器变量的变化上执行一些功能。如果有人可以帮助我。我提供了以下代码。

for(var i=0; i<listingTime.length; i++){
if (listingTime[i].time >= 0) {
var second = listingTime[i].time / 1000;
var currentHour = parseInt(second / 3600);
}
}

在这里,我想检测 currentHour 变量的变化。

最佳答案

您可以在循环之前设置一个先前的值变量,并且每当更新 currentHour 时,只需将其与 previousValue 变量匹配即可。如果相同则不是变化,如果不相同则发生变化,可以执行回调。

另一种方法是使用对象原型(prototype)来更改 currentHour 的值。以下代码表明:

上面的代码可以修改为下面添加一个changeListner

var HourListner = {
currentHour: null,
update: function(newValue, callback){

if(this.currentHour !== newValue){
this.currentHour = newValue;
callback(newValue);
}
}
}
timer = Object.create(HourListner);

var changeListner = function(value){
//value is the new value of currentHour
console.log(value)
}

for(var i=0; i<listingTime.length; i++){
if (listingTime[i].time >= 0) {
var second = listingTime[i].time / 1000;
var currentHour = parseInt(second / 3600);
timer.update(currentHour, changeListner)
}
}

这个技巧可以在下面的代码中独立测试:

var HourListner = {
currentHour: null,
update: function(newValue, callback) {

if (this.currentHour !== newValue) {
this.currentHour = newValue;
callback(newValue);
}
}
}
timer = Object.create(HourListner);

var changeListner = function(value) {
//value is the new value of currentHour
console.log(value)
$('body').append('<p>'+value+'</p>')
}
var interval = setInterval(function(){
var t = new Date();
timer.update(t.getMinutes(), changeListner)
}, 200)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

如果先前的值发生变化,这将执行 changeListner

关于javascript - 使用 jQuery 检测计时器变量的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39199674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com