Javascript 如何根据时间自动更改CSS类?

Javascript 如何根据时间自动更改CSS类?,javascript,Javascript,我正在构建一个天气应用程序,其中我有白天模式和夜晚模式。时间根据用户搜索城市的时间而变化。我尝试使用这段代码在夜间模式和日间模式的不同CSS之间切换 function getMode(response) { let today = response.data.dt; let timezone = response.data.timezone; let difference = today + timezone - 3600; let hours = timeConverter2(

我正在构建一个天气应用程序,其中我有白天模式和夜晚模式。时间根据用户搜索城市的时间而变化。我尝试使用这段代码在夜间模式和日间模式的不同CSS之间切换

function getMode(response) {
  let today = response.data.dt;
  let timezone = response.data.timezone;
  let difference = today + timezone - 3600;
  let hours = timeConverter2(difference);
  let mode = document.getElementById("app");
  if (hours > 17 || hours < 6) {
    mode.classList.add("darkmode").remove("lightmode");
  }
  if (hours < 17 || hours > 6) {
    mode.classList.add("lightmode").remove("darkmode");
  }
}

气象观察
搜寻
里斯本


我认为问题在于:

if (hours > 17 || hours < 6) {
  mode.classList.add("darkmode").remove("lightmode");
}
if (hours < 17 || hours > 6) {
  mode.classList.add("lightmode").remove("darkmode");
}
if(小时数>17 | |小时数<6){
mode.classList.add(“darkmode”).remove(“lightmode”);
}
如果(小时数<17 | |小时数>6){
mode.classList.add(“lightmode”).remove(“darkmode”);
}
以3am为例,两个循环都满足条件。所以应该是这样的:

if (hours > 17 || hours < 6) {
  mode.classList.add("darkmode").remove("lightmode");
}
else {
  mode.classList.add("lightmode").remove("darkmode");
}
if(小时数>17 | |小时数<6){
mode.classList.add(“darkmode”).remove(“lightmode”);
}
否则{
mode.classList.add(“lightmode”).remove(“darkmode”);
}
还应检查边缘情况:

if (hours >= 6 && hours <= 17) {
  mode.classList.add("lightmode").remove("darkmode");
}
else {
  mode.classList.add("darkmode").remove("lightmode");
}

如果(hours>=6&&hours为了有类似问题的人的利益,我只是用以下方式更改了代码的顺序:

if (hours > 17) {
    mode.classList.add("darkmode").remove("lightmode");
  }
  if (hours < 6) {
    mode.classList.add("darkmode").remove("lightmode");
  } else {
    mode.classList.remove("darkmode").add("lightmode");
  }
}
而不是

mode.classList.add("lightmode").remove("darkmode");

如何调用
getMode()
?我假设您每次搜索不同的城市时都会调用它?搜索时,
hours
是否正确更新?我使用axios调用它,我有一个搜索(city)函数,其中包含API url,我使用axios.get(url)调用它。然后(getMode)。每次搜索城市时,小时数都会更新。
get\u mode
看起来它应该做你想做的事情,所以问题出在别处。你需要显示如何调用
get\u mode
(换句话说,请提供一个)你能告诉我
hours
变量是什么吗?谢谢你的回答,我以前就有过这样的变量,问题依然存在!@mfs你有没有用&&或只用| |选项来尝试这个选项?只用| | |…一个数字不能同时大于17和小于6,对吗?@mfs:像这样=像哪一个?
hours<17 | hours>6
I这总是正确的。恐怕任何调试都需要一个最小的可重复的示例。
mode.classList.remove("darkmode").add("lightmode");
mode.classList.add("lightmode").remove("darkmode");