如何使用setTimeOut在Javascript中更改指定时间块中的文本
How to change text in specified time blocks in Javascript using setTimeOut?
我制作了一个Javascript代码,它首先评估本地机器的当前时间,并根据指定的时间块显示文本/消息。例如,消息将在时间块00小时-04小时之间为"Notification-1"。因此,24小时内有6个时间块(例如,00小时到04小时,04小时到08小时……20小时到00小时)。
如果打开新浏览器,我的代码运行良好,但在刷新浏览器之前,它不会自动更改文本。
我的问题是:我需要文本/消息根据指定的时间块自动旋转,而不刷新页面。
我知道PHP,但不懂Javascript,也不知道如何使用setTimeOut。其次,如果它将是一个无限循环或递归,它会过度消耗机器资源吗?
我的工作代码是:
<p id="try"></p>
<script>
var d = new Date();
var curr_hour = d.getHours();
var curr_minute = d.getMinutes();
var curr_time = curr_hour + curr_minute/60;
if (curr_time >= 0 && curr_time < 4) {
document.getElementById("try").innerHTML = "Notification-1";
} else if (curr_time >= 4 && curr_time < 8) {
document.getElementById("try").innerHTML = "Notification-2";
} else if (curr_time >= 8 && curr_time < 12) {
document.getElementById("try").innerHTML = "Notification-3";
} else if (curr_time >= 12 && curr_time < 16) {
document.getElementById("try").innerHTML = "Notification-4";
} else if (curr_time >= 16 && curr_time < 20 ) {
document.getElementById("try").innerHTML = "Notification-5";
} else if (curr_time >= 20 && curr_time < 23.98 ) {
document.getElementById("try").innerHTML = "Notification-6";
}
</script>
我得到了下面的代码,它说每秒替换SetInterval的功能,但不足以应用:
// A basic setTimeout loop, mimicking setInterval
var doStuff = function () {
// Do stuff
setTimeout(doStuff, 1000);
};
setTimeout(doStuff, 1000);
我会使用setInterval。对于这样一个简单的脚本,您不会有任何资源使用问题。
<p id="try"></p>
<script>
function showNotification() {
var d = new Date();
var curr_hour = d.getHours();
var curr_minute = d.getMinutes();
var curr_time = curr_hour + curr_minute/60;
if (curr_time >= 0 && curr_time < 4) {
document.getElementById("try").innerHTML = "Notification-1";
} else if (curr_time >= 4 && curr_time < 8) {
document.getElementById("try").innerHTML = "Notification-2";
} else if (curr_time >= 8 && curr_time < 12) {
document.getElementById("try").innerHTML = "Notification-3";
} else if (curr_time >= 12 && curr_time < 16) {
document.getElementById("try").innerHTML = "Notification-4";
} else if (curr_time >= 16 && curr_time < 20 ) {
document.getElementById("try").innerHTML = "Notification-5";
} else if (curr_time >= 20 && curr_time < 23.98 ) {
document.getElementById("try").innerHTML = "Notification-6";
}
}
setInterval(showNotification, 1000);
</script>
如果您不想在收到第一条消息前等待1秒,只需添加showNotification();设置间隔后
我认为应该这样做,你只需将代码包装在一个函数中,这样你就可以在每个时间段调用它:
<p id="try"></p>
<script>
function setTextNotification() {
var d = new Date();
var curr_hour = d.getHours();
var curr_minute = d.getMinutes();
var curr_time = curr_hour + curr_minute/60;
if (curr_time >= 0 && curr_time < 4) {
document.getElementById("try").innerHTML = "Notification-1";
} else if (curr_time >= 4 && curr_time < 8) {
document.getElementById("try").innerHTML = "Notification-2";
} else if (curr_time >= 8 && curr_time < 12) {
document.getElementById("try").innerHTML = "Notification-3";
} else if (curr_time >= 12 && curr_time < 16) {
document.getElementById("try").innerHTML = "Notification-4";
} else if (curr_time >= 16 && curr_time < 20 ) {
document.getElementById("try").innerHTML = "Notification-5";
} else if (curr_time >= 20 && curr_time < 23.98 ) {
document.getElementById("try").innerHTML = "Notification-6";
}
}
var doStuff = function () {
setTextNotification();
setTimeout(doStuff, 1000);
};
setTimeout(doStuff, 1000);
</script>
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- 定时器上的变色文本?(网页版)
- 使用滚动魔术的文本框的补间不透明度
- 如何在 Javascript 中随时间更改按钮文本
- JavaScript 文本随时间来回变化(例如:1,2,3,2,1,2,3,2,1,2,3..)
- 使用 ngModel 作为绑定时,文本区域中加载的文本中的跳线会丢失
- 文本颜色,随时间褪色效果
- Javascript、倒计时定时器和显示文本
- 创建一个带有按钮的定时滑块,这些按钮可以影响表格不同部分的文本和图像
- Selenium RC (Python)只将文本发送到页面上的一个定时控件
- 我如何突出文本-严格定时-一个la卡拉ok没有Flash在网页上.什么技术选择
- 改变文本的颜色在定时间隔
- 定时文本颜色
- 我如何使出现2个数字在分钟和秒,并删除旁边的定时器文本
- 定时文本交换
- 定时器到期后,如何调整JS代码以替换链接文本