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

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

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 } 

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

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

这是一个例子:

每分钟检查一次,并显示一个DIV( IDtarget ),只有在下午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请求以获取内容等,但这取决于您。

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