我希望在不同的时间执行不同的功能,而又不要使它们相互重叠。
部分上下文-我想一次删除一个页面中的一个元素,而不是在一段时间内一次删除所有元素。
例如,在1:00 am删除元素1,然后在2:00 am删除元素1 + 2,依此类推。
将使用JQuery删除元素。
编辑:
window.setInterval(function(){ // Set interval for checking
var date = new Date(); // Create a Date object to find out what time it is
if(date.getHours() === 12 && date.getMinutes() === 18){ // Check the time
$(function() {
//Remove Elements
$('#element1').remove();
})
}, 10000); // Repeat every 10000 milliseconds (10 seconds)
到目前为止,这是我计时一个功能的方法-看到错误:未捕获的SyntaxError:意外的令牌。
答案 0 :(得分:1)
这是一个简单的代码段,具有两个变体,可以按计划删除元素。
after
,它将在经过毫秒后通过给定的选择器删除元素。调用ScheduledRemover.work(settings);
at
指定为可以具有以下结构的对象__
at: {
h: 14, // (Optional) the hour at which remove should be executed
m: 30, // (Optional) the minute at which remove should be executed
s: 23 // (Optional) the second at which remove should be executed
}
该代码将计算当前时间与所需删除时间的差,并使用setTimeout
设置超时以执行删除。这样,您不必每次都在setInterval
中检查时间是否到了。
希望这很有帮助。让我知道是否有任何问题。干杯!
var ScheduledRemover = (function() {
function _work(settings) {
for (let i = 0; i < settings.length; i++) {
let schedulerRemove = settings[i];
if (schedulerRemove.at) {
/* Remove element at specific time */
var currentTime = new Date();
var removalTime = new Date();
if (typeof schedulerRemove.at.h === 'number') {
removalTime.setHours(schedulerRemove.at.h);
}
if (typeof schedulerRemove.at.m === 'number') {
removalTime.setMinutes(schedulerRemove.at.m);
}
if (typeof schedulerRemove.at.s === 'number') {
removalTime.setSeconds(schedulerRemove.at.s);
}
var removeAfter = removalTime - currentTime;
if (removeAfter >= 0) {
/* If difference is less than 0 then time for the removal passed */
setTimeout(function() {
$(schedulerRemove.selector).remove();
console.log(schedulerRemove.selector + ' removed ...');
}, removeAfter);
} else {
console.log('Time passed for removing ' + schedulerRemove.selector);
}
} else if (schedulerRemove.after) {
/* Remove element after specific time */
setTimeout(function() {
$(schedulerRemove.selector).remove();
console.log(schedulerRemove.selector + ' removed ...');
}, schedulerRemove.after);
}
}
}
return {
work: _work
}
}());
var settings = [{
selector: '#element1',
after: 2000
},
{
selector: '#element2',
after: 5000
},
{
selector: '#element3',
at: {
h: 14,
m: 49
}
},
{
selector: '#element4',
at: {
h: 14,
m: 53,
s: 1
}
},
{
selector: '#element5',
after: 30000
}
];
ScheduledRemover.work(settings);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="element1">Element 1</div>
<div id="element2">Element 2</div>
<div id="element3">Element 3</div>
<div id="element4">Element 4</div>
<div id="element5">Element 5</div>