我有大约10 <div>
个,并且在每个<div>
中都有不同的日期时间。当客户端本地时间与<div>
的时间匹配时,我想调用java脚本函数。
<div id="a" class ="help">2/3/2013 6:39:14 PM</div>
<div id="b" class ="help">2/3/2013 2:39:14 PM</div>
<div id="c" class ="help">2/4/2013 6:39:14 PM</div>
<div id="d" class ="help">12/29/2013 10:39:14 AM</div>
如果客户端计算机的当前日期时间与<div>
中的日期时间匹配;调用函数说callMe()
现在我只有 -
一些PHP代码:
echo "<script type='text/javascript'>putTime(".$questionData['expiry'].",".$needAnswer[$i].")</script>";
和javascript:
function putTime(x,y) {
var theDate = new Date(x*1000); // convert time value to milliseconds
var dateString = theDate.toLocaleString();
document.getElementById(y).innerHTML = dateString;
}
这就是我所拥有的一切。
答案 0 :(得分:1)
作为另一种可能性,您还可以在请求动画帧上注册一个函数,该函数将检查每个div与当前时间的时间。这样你就不会惹上超时等等。可能不是最好的解决方案,但只是一个想法。
答案 1 :(得分:0)
我不知道你为什么需要这个,但这是一个可能的解决方案:
var dates = [],
divs = document.querySelectorAll(".help");
for (var i = 0; i < divs.length; i++) {
dates.push(new Date(divs[i].innerHTML).toString());
}
setInterval(function() {
for (var i = 0; i < dates.length; i++) {
if (dates[i] === new Date().toString()) {
callMe();
break;
}
}
}, 500);
看起来您的日期格式适合使用new Date()
进行解析,因此上述代码在大多数浏览器中都可以正常使用。
答案 2 :(得分:0)
尝试使用JavaScript Timing Events在特定时间间隔内调用函数。
setInterval(function(){alert("Test")},5000);
替代方案 -
setTimeout() : executes a one-time-only function, postponed by a specific number of mils
祝你好运, 亚历
答案 3 :(得分:0)
这应该做你要求的一切(假设你可以使用jQuery):
var timers = [];
$('div.help').each(function() {
var localeString = $(this).text();
var date = new Date(localeString);
var timestamp = date.getTime();
timers.push({
time: timestamp,
div: this,
});
});
setInterval(function() {
var now = (new Date()).getTime();
for(var i=0; i<timers.length; i++) {
var timer = timers[i]
if(timer && (now >= timer.time)) {
callMe();
timers[i] = false;
}
}
}, 500);
function callMe() {
alert('i was called');
}
编辑:修正代码
您可以通过打开控制台并输入以下内容来确保此功能正常工作:
timers.push({
time: (new Date()).getTime()+1000,
});
答案 4 :(得分:0)
这么简单
var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) -now;
if (millisTill10 < 0)
{
millisTill10 += 86400000; // it's after 10am, try 10am tomorrow.
}
setTimeout(function(){alert("It's 10am!")}, millisTill10);