javascript - 根据一天中的时间触发 javascript 事件

标签 javascript

我正在寻求帮助,看看是否有一种简单快捷的方法可以根据网站在浏览器中打开的时间来触发 JS 事件。

基本上我想做的是在用户本地时区的下午 5 点到凌晨 5 点之间触发此脚本。该脚本当前连接到一个按钮,该按钮只需将页面主体的类别翻转为“夜间模式”。我希望两者能够协调工作,根据时间实现自动化,并且如果您想要深色或浅色主题,则能够使用按钮进行覆盖。

function toggleClass(element, className) {
if (!element || !className) {
    return;
}
var classString = element.className,
    nameIndex = classString.indexOf(className);
if (nameIndex == -1) {
    classString += ' ' + className;
} else {
    classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length);
}
element.className = classString;
}

document.getElementById('day-btn').addEventListener('click', function() {
    toggleClass(document.getElementById('body'), 'night');
});

https://jsfiddle.net/simpson/57xe333n/2/

最佳答案

var time = new Date();
element = document.getElementById('body');
className = "night";
console.log(time.getHours());
if(time.getHours() > 17 || time.getHours < 5) {
    if (!element || !className) {
        return;
    }
    var classString = element.className,
        nameIndex = classString.indexOf(className);
    if (nameIndex == -1) {
        classString += ' ' + className;
    } else {
        classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length);
    }
    element.className = classString;
}

这使用了从系统中提取的 JS 内置日期功能。它运行一个 getHours() 函数,该函数返回一个 int(0-23)。 if 语句 (time.getHours() > 17 || time.getHours < 5)然后,仅在下午 5 点之后或凌晨 5 点之前运行代码并更改主题。希望这可以帮助您入门。

关于javascript - 根据一天中的时间触发 javascript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765242/

相关文章:

javascript - Angular 过滤器相关数据

javascript - simple_form 提示作为工具提示

javascript - VueJS 观察插入的参数

javascript - 通过名称找到变量后设置 var 值

javascript - 将 POST 请求中的 ID 传递到单独的端点

javascript - 了解织物 Z 索引

javascript - Div 在复选框上切换,但在 div 外部时检测到单击以关闭

javascript - 是否有js插件将矩阵参数转换为css3转换属性?

javascript - 我可以从 Kate 编辑器的 JavaScript 访问 shell、web 或菜单命令吗?

javascript - 将未定义更改为空字符串