2011-10-06 52 views
0

即时通讯尝试写一点.js文件,以将css样式从display:block更改为display:none,具体取决于一天中的时间,08.30至17.00显示区和17.00至08.30无显示。要根据一天中的时间更改CSS样式(javascript)

这是我到目前为止有:

<script language="JavaScript"> 
day=new Date()  //..get the date 
x=day.getHours() //..get the hour 

if(x>=8.30 && x<17) { 

    document.write('<style type="text/css">#live{display:block}"></style>') 

} else 

if(x>=17 && x<8.30) { 

    document.write('<style type="text/css">#live{display:none}"></style>') 

}; 

</script> 

不要认为这是不错的js加上不知道,如果使用8.30将工作加上不知道,如果最后的“;”是必要的。

任何帮助,这将是非常感谢。

林现在尝试这种代码,但不工作

<script type="text/javascript"> 
$(document).ready (function(){ 

var dateObj = new Date(); 
var hour = dateObj.getHours() * 100 + dateObj.getMinutes(); 

if (hour >= 1600 && hour <= 1800) { 
document.getElementById('live').style.display = "none"; 
} 


}); 

</script> 
+0

你意识到'day.getHours()'返回一个int值,是吗? – Neal

+0

感谢Spudley的更正 – dave

+0

不,使用'8.30'不会像你想要的那样工作。 'getHours()'中的小时值将始终为整数值。 – Spudley

回答

0
  1. getHours()返回一个整数(0到23)。对于8:30,您需要 相应地检查getHours()getMinutes()
  2. 最后一个分号不需要在那里。
1

Date().getHours()返回一个整数。为了您的代码工作,你不得不做这样的事情:

var dateObj = new Date(); 
var hour = dateObj.getHours() * 100 + dateObj.getMinutes(); 

if (hour >= 830 && hour <= 1700) { 
    document.getElementById('your_el').style.display = "none"; 
} 

注意,当DOM准备操作你应该只使用此代码。

虽然,这真的是你想要的吗? JavaScript的日期从用户的时钟获取日期和时间信息。你最好在服务器上处理这个问题。

+0

好吧,这是我现在使用的,所以我可以在这个时候测试,但似乎并不工作。 var hour = dateObj.getHours()* 100 + dateObj.getMinutes(); if(小时> = 16 &&小时<= 18)document.getElementById('live').style。display =“none”; } – dave

+0

@dave你是什么意思,它不工作?条件应该是'hour> = 1600 && hour <= 1800',这只能在DOM准备好操作时使用。 – Aillyn

+0

当DOM准备就绪时,它似乎并没有隐藏(diaply:none)css风格,你的意思是添加$(document).ready(function(){给脚本,我试过了,仍然没有喜悦 – dave

0

getHours()只让你的小时数,你需要得到分钟以及 尝试

x=day.getHours()+ (day.getMinutes()/100); 

有关;它不是一个if后neccessary,但它是把它很好的做法在每个代码行结束时(即每隔一行)

相关问题