检查类在javascript中的存在时间是否长于X
Check is class exist longer than X in javascript
我写了一个简单的监视器,它可以检查网络上的一些东西并显示状态——我使用ajax获取状态。当出现问题时,我会将class error
添加到显示当前状态的div中。
后来我添加了一个带有错误声音的播放器,当出现类错误时,它会播放音乐。我设定了3秒的间隔,仅此而已。
但错误并不总是意味着错误,有时我会收到错误的警告。现在我正在寻找当类错误存在时间超过XX秒时播放声音的方法。
我想我必须编写间隔为1s的函数,将每个命中1的值添加到临时变量中,并检查变量是否比其他干净的临时变量大,但也许还有更优雅的方法。
我想它应该可以
$('.error').each(function(){
var e = $(this)
setTimeout(function(){
if (e.attr('class') == 'error'){
e.attr('class','error-with-sound');
}
},2000);
});
您应该使用两个vars
存储它们各自事件的当前时间。
var oldTime, newTime;
// Now when you are adding the class
$(something).addClass("someclass");
oldTime = new Date().getTime(); // Store the timestamp.
//And when you are removing the class
$(something).removeClass("someclass");
newTime = new Date().getTime(); // Store the timestamp.
// Now you check whether class was added for more then XX Seconds
var _diff = (newTime - oldTime)/1000; // Diference is in seconds.
没有直接的方法,您可以在类中使用类似error_1448953716457
的分隔符添加时间戳,稍后您可以将其拆分并与当前时间戳进行比较
$('#na').click(function () {
var t = new Date().getTime();
$('h1').addClass("error_" + t);
});
$('#nr').click(function () {
var t = new Date().getTime();
$("[class^=error]").each(function (e) {
$("span").html("Diff. Seconds : " + ((t - ($(this).attr('class').split(' ').pop().split('_')[1])) / 1000).toString());
});
});
input {
width:100px;
}
.error {
color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<h1>.addClass()</h1>
<input id="na" value="Add Class1" type="button" />
<br/>
<input id="nr" value="Calculate Diff" type="button" />
<span></span>
如果要跟踪页面上的.error
元素,请设置一个独立的间隔,通过在jquery中设置属性或数据值来查找这些元素并跟踪以前看到的元素。
如果不再需要检查.error
元素,请记住clearInterval(interval)
。
(function ($) {
// set constants in milliseconds as desired
var INTERVAL_LENGTH = 100, // how often to check DOM for error elements
NOTIFY_AFTER = 3000; // handle error after this length
// check for .error elements and handle those that have been around for a while
var interval = setInterval(function () {
var now = Date.now();
$(".error").each(function () {
var t = $(this).data('error-time');
if(t) {
if(now - t > NOTIFY_AFTER) {
handleErrorElement(this);
}
}
else {
$(this).data('error-time', now);
}
});
}, INTERVAL_LENGTH);
function handleErrorElement(elem) {
// do what you need for error elements visible past a threshold
console.log("handling error element: ", elem);
}
})(jQuery);
相关文章:
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- HTML 5 音频 :是否有在更改缓冲持续时间时触发的事件
- URL 长度是否会导致页面加载时间不同
- 是否可以在javascript中访问
src的文件创建时间
- 检查JavaScript中的日期时间是否相等时出现错误结果
- 如果系统时间发生更改,setTimeout是否有效
- 使用JS检查用户是否在EST时区和设置的EST时间范围内
- 流星是否提供时间选择器功能
- 计算日期选择器+时间选择器是否在东部标准时区的过去
- 如何使用Moment.JS检查当前时间是否在2次之间
- 检查是否在一定时间间隔内加载了多个图像;如果没有,则替换为其他 URL
- JavaScript 检查时间范围是否重叠
- 删除不需要的javascript和css是否包括减轻网页加载时间
- 异步加载的脚本是否会影响其他脚本的加载时间
- Javascript检查一段时间内是否没有发生某些事情
- jQuery - 检查当前日期和时间是否在所选日期和时间的 24 小时内
- 是否可以根据时间进行重定向
- 在JavasScript中是否有任何时间当“!value ?null : value[0]“ 不等同于 ”value ?
- 给定一个日期/时间字符串,w javascript/jquery,你怎么能确定它是否是今天
- 检查在捐赠开始日期和结束日期之间是否已有预留时间