在一天的特定时间插入元素

时间:2010-07-30 00:39:40

标签: javascript jquery

做某事的最佳方式是什么,比如在一天中的某个时间插入元素?我应该使用setTimeout()操作系统有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

首先,确定这是否是需要在客户端或服务器端发生的事情。你没有提供足够的信息来确定,但是因为你已经标记了这个Javascript我认为客户端是最好的方式。

按照这种假设,听起来用户将拥有一个开放的网页,并且在您想要操作或添加内容的某些时候。

以下是一个例子:

每分钟检查一次,并显示一个DIV( ID target),只有在下午1:59之后和下午6:00之前(在用户时区):

setTimeout ( function(){

  var hour = (new Date()).getHours();
  if (hour>1 && <6) {
    document.getElementById('target').style.display = "block";
  } else {
    document.getElementById('target').style.display = "none";
  }

}, 60000 );

您当然可以将其更改为使用 createElement 插入新的DIV,并发出AJAX请求以获取内容等,但这取决于您。

答案 1 :(得分:1)

setInterval()对此更好。但是不要将间隔设置为24小时,或者其他什么。将其设置为每分钟左右检查一次,如果新的Date()大于您想要的时间,则运行元素插入功能。

答案 2 :(得分:0)

setTimeout()和setInterval()都执行与加载时间相关的定时js语句,而不是每天的特定时间,因此它们看起来不是一个干净的解决方案。你可以在那里抛出一些服务器端脚本。一些随机的解决方案从疲惫的大脑中拔出:

  • 只需将html元素包装在仅在给定时间执行的条件语句(php,python等)中
  • 在页面上放置元素,但将其设置为display:none。使用php在某个时间添加一个类/样式来覆盖display属性。
  • 再次,使用php添加一个类,但这次使用js将元素添加到DOM中,使用新类作为新元素位置的标识符。

如果你想保持客户端的一切......显然不是很好......:)

修改 要在每天下午1点到2点之间执行php语句(未经测试):

$now = date('G',time());
$start = 13;
$end = 14;
if($now >= $start && $now <= $end){ 
    //do something
}