据我所知,我的代码工作得很好(虽然我作为一名业余编码员可以改进)但我办公室里有一台机器似乎与其他机器不同。
在那台电脑上,我的脚本适用于FireFox,但在Chrome上它并不适用。
代码:[取决于一天中的时间,是周末还是工作日隐藏或显示两个div]
var d = new Date();
var t = d.toLocaleTimeString();
var day = d.getDay()%6;
if (t < "08:30:00" || t > "17:30:00" || day == 0 ) {
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "inline";
} else {
document.getElementById("div1").style.display = "inline";
document.getElementById("div2").style.display = "none";
}
我面临的问题是Chrome在这台特定的计算机上出错了,显示/隐藏了应该显示/隐藏的相反div。
我的问题:
我是否正确计算时间/使用正确的函数等?
我的方法是否与现代相当更新的浏览器兼容?
谢谢。
答案 0 :(得分:2)
toLocaleTimeString()
将在不同的语言环境中有另一个实现。你不应该用它来检查时间。仅用它来向用户显示时间。
您可能需要查看this。
您可以使用getHours()
和getMinutes()
来检查时间。
你也可以这样做:
var t1 = new Date(d);
t1.setHours(8);
t1.setMinutes(30);
t1.setSeconds(0);
var t2= new Date(d);
t2.setHours(17);
t2.setMinutes(30);
t2.setSeconds(0);
var day = d.getDay()%6;
if (d < t1 || d > t2 || day == 0 ) {
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "inline";
} else {
document.getElementById("div1").style.display = "inline";
document.getElementById("div2").style.display = "none";
}