如果变量(或元素值)在超过 2 秒内保持不变,是否做某事?
If variable (or element value) remains unchanged for over 2 seconds, do something?
我有一个自动增加到特定值的变量。该值是根据页面上的元素数量确定的。基本上我计算元素的数量,对于我找到的每个元素,我增加变量的值。这个变量的值总是不同的,有时是320,有时是512;这是随机的。但是它会在几秒钟内从 0 增加到某个数字。一旦它停止增加,它将保持在那个值并且不会再改变
如何检测此变量的值是否保持不变超过 2 秒?
如果无法检测到变量的变化,我也可以将值存储在隐藏的输入字段中。或者在任何其他领域。当变量(或元素)的值保持不变超过 2 秒时,我只需要能够 运行 一个函数。
任何帮助将不胜感激,过去几个小时我一直在尝试各种各样的事情,但没有成功。
编辑:
Geez,无需投反对票,一个人可以不问问题寻求帮助吗? :( 我已经厌倦了自己尝试,自己也想不通。
反正。我尝试过的事情:
- 使用 settimeout 看看我是否可以获取之前的值并将其与当前值进行比较,但没有按照我的预期进行计算
- 尝试在找到最后一项后将某个值 ("true") 赋予另一个元素,但最后一项总是不同的,并且递增该值的函数在 "while" 内另一个 "while"(很难解释为什么)所以我真的不知道最后计算了哪个项目
- 尝试复制计数函数并运行它在开始时知道有多少项目(并将值存储在名为"firstCounting"的变量中),然后运行再次使用常规计数函数,一旦该函数的变量 "count" 与 "firstCounting" 的值匹配,我就知道我将结束计数。但是这个函数又大又复杂,如果只是复制它,只看计数器何时停止计数,那就太愚蠢了。我的代码长 474 行。我将它与 SharePoint 中的术语集和术语结合使用,但由于问题更 JavaScript 相关,所以我将其发布在此处。
- 我尝试了事件接收器、对象观察器以及任何应该 "watch" 变量的东西。当我使用隐藏的输入元素而不是变量时,甚至事件接收者也没有做到这一点。
勾选这个,希望这是你想要的
var someValue = 1
var prevVal = null;
var _myInterval = setInterval(function() {
if(prevVal == someValue) {
console.log("No change for 2 second", someValue)
} else {
console.log("Value was changed between past 2 second prev: ", prevVal, " New: ", someValue)
prevVal = someValue;
}
}, 2000)
编辑
使用 var
而不是 this
检查附加的输出图像
我有一个自动增加到特定值的变量。该值是根据页面上的元素数量确定的。基本上我计算元素的数量,对于我找到的每个元素,我增加变量的值。这个变量的值总是不同的,有时是320,有时是512;这是随机的。但是它会在几秒钟内从 0 增加到某个数字。一旦它停止增加,它将保持在那个值并且不会再改变
如何检测此变量的值是否保持不变超过 2 秒?
如果无法检测到变量的变化,我也可以将值存储在隐藏的输入字段中。或者在任何其他领域。当变量(或元素)的值保持不变超过 2 秒时,我只需要能够 运行 一个函数。
任何帮助将不胜感激,过去几个小时我一直在尝试各种各样的事情,但没有成功。
编辑:
Geez,无需投反对票,一个人可以不问问题寻求帮助吗? :( 我已经厌倦了自己尝试,自己也想不通。
反正。我尝试过的事情:
- 使用 settimeout 看看我是否可以获取之前的值并将其与当前值进行比较,但没有按照我的预期进行计算
- 尝试在找到最后一项后将某个值 ("true") 赋予另一个元素,但最后一项总是不同的,并且递增该值的函数在 "while" 内另一个 "while"(很难解释为什么)所以我真的不知道最后计算了哪个项目
- 尝试复制计数函数并运行它在开始时知道有多少项目(并将值存储在名为"firstCounting"的变量中),然后运行再次使用常规计数函数,一旦该函数的变量 "count" 与 "firstCounting" 的值匹配,我就知道我将结束计数。但是这个函数又大又复杂,如果只是复制它,只看计数器何时停止计数,那就太愚蠢了。我的代码长 474 行。我将它与 SharePoint 中的术语集和术语结合使用,但由于问题更 JavaScript 相关,所以我将其发布在此处。
- 我尝试了事件接收器、对象观察器以及任何应该 "watch" 变量的东西。当我使用隐藏的输入元素而不是变量时,甚至事件接收者也没有做到这一点。
勾选这个,希望这是你想要的
var someValue = 1
var prevVal = null;
var _myInterval = setInterval(function() {
if(prevVal == someValue) {
console.log("No change for 2 second", someValue)
} else {
console.log("Value was changed between past 2 second prev: ", prevVal, " New: ", someValue)
prevVal = someValue;
}
}, 2000)
编辑
使用 var
而不是 this
检查附加的输出图像