javascript - 特定日期的倒计时
问题描述
我想建立一个倒计时程序。但我的问题是我无法得到
getElementsByClassName
工作(在我看来)。如果我使用整个程序将起作用
getElementById
并使用 id=""... 更改 HTML 标签
我的整个代码可以在这里找到:https ://jsfiddle.net/f1kzL78h/5/
我需要类函数,因为将来我的 HTML 文件中会有更多的 p 标记,并且我想将 Javascript 应用于我的所有具有相同名称的类。
HTML:
<p class="date">2019-04-13</p>
<p class="time">21:21</p>
<p class="appear"></p>
JS:
var articleDate = document.getElementsByClassName("date");
var articleTime = document.getElementsByClassName("time");
var total = articleDate + 'T' + articleTime + ':00';
var countDownTime = new Date(total).getTime();
var x = setInterval(function() {
var timeNow = new Date().getTime();
var difference = countDownTime - timeNow;
var days = Math.floor(difference / (1000 * 60 * 60 * 24));
var hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((difference % (1000 * 60)) / 1000);
res = days + ":" + hours + ":" + minutes + ":" + seconds;
document.getElementsByClassName("appear") = res;
}, 1000);
我感谢我能得到的所有帮助。
解决方案
“我需要类函数,因为将来我的 HTML 文件中会有更多的 p 标记,并且我想将 Javascript 应用于我所有具有相同名称的类。”
我做了一些修改来给你一个想法。我认为这可以作为您为许多元素创建倒计时的起点:
<p class="date">2019-04-13</p>
<p class="time">21:21</p>
<p class="appear"></p>
<p class="date">2019-04-13</p>
<p class="time">10:21</p>
<p class="appear"></p>
setInterval(function() {
var articleElements = document.getElementsByClassName("date");
for(var i = 0; i < articleElements.length; i++) {
var articleDate = articleElements[i].innerText;
var articleTime = articleElements[i].nextElementSibling.innerText;
var total = articleDate + 'T' + articleTime + ':00';
var countDownTime = new Date(total).getTime();
var elAppear = articleElements[i].nextElementSibling.nextElementSibling;
elAppear.setAttribute('data-countdown', countDownTime);
var timeNow = new Date().getTime();
var difference = countDownTime - timeNow;
var days = Math.floor(difference / (1000 * 60 * 60 * 24));
var hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((difference % (1000 * 60)) / 1000);
res = days + ":" + hours + ":" + minutes + ":" + seconds;
elAppear.innerText = res;
}
}, 1000);
推荐阅读
- java - AWS Java SDK - 将 ProgressListener 与 TransferManager 结合使用
- css - ng-bootstrap 的 Carousel 在全窗口中看起来不正确,但至少看起来不错
- bash - 在 bash 中编写相当于 Python 的输入函数
- git - 是否可以将服务帐户与 Git-Secrets 一起使用?
- python - 提取 span 标签内的信息
- c# - .NET Core 全局到和自包含 exe
- mongodb - 各种规模的MongoDB数据库性能对比
- tkinter - 我无法设置顶级标题
- ios - 为 UIView 设置动画以从屏幕上移出然后从底部无休止地移出屏幕
- java - 如何在同一个安装程序中包含 2 个 exe 文件(在 INNO 设置中)