Javascript 特定日期的倒计时
我想建立一个倒计时程序。但我的问题是我不能得到Javascript 特定日期的倒计时,javascript,html,Javascript,Html,我想建立一个倒计时程序。但我的问题是我不能得到 getElementsByClassName 工作(在我看来)。如果我使用 getElementById 并更改id为“”的HTML标记 我的全部代码可在此处找到: 我需要class函数,因为将来在我的HTML文件中会有更多的p标记,并且我希望将Javascript应用到所有具有相同名称的类 HTML: 非常感谢您的帮助。更改为文档。GetElementsByCassName(“出现”)[0]。innerHTML=res 还更新了 var ar
getElementsByClassName
工作(在我看来)。如果我使用
getElementById
并更改id为“”的HTML标记
我的全部代码可在此处找到:
我需要class函数,因为将来在我的HTML文件中会有更多的p标记,并且我希望将Javascript应用到所有具有相同名称的类
HTML:
非常感谢您的帮助。更改为
文档。GetElementsByCassName(“出现”)[0]。innerHTML=res代码>
还更新了
var articleDate = document.getElementsByClassName("date")[0].innerHTML;
var articleTime = document.getElementsByClassName("time")[0].innerHTML;
因为document.getElementsByClassName(“出现”)
只有DOM元素,而document.getElementsByClassName
返回元素数组,需要innerHTML来获取值。
按类别划分的元素
document.getElementsByClassName(“出现”)
返回元素的集合。您可以使用以下代码对其进行迭代
const appears = document.getElementsByClassName("appear");
for (var i = 0; i < appears.length; i++) {
appears.item(i).innerHTML = res;
}
2019-04-13
21:21
像这样更改代码。使用document.getElementsByClassName(“日期”)[0].textContent获取值
//Fångar upp信息来自artiklens数据och tid
var articleDate=document.getElementsByClassName(“日期”)[0].textContent;
var articleTime=document.getElementsByClassName(“时间”)[0].textContent;
var总计=articleDate+'T'+articleTime+':00';
var countdown=新日期(总计).getTime();
var x=setInterval(函数(){
var timeNow=new Date().getTime();
var差异=countDownTime-timeNow;
var天数=数学下限(差值/(1000*60*60*24));
可变小时数=数学下限((差异%(1000*60*60*24))/(1000*60*60));
风险值分钟数=数学下限((差异%(1000*60*60))/(1000*60));
变量秒=数学地板((差值%(1000*60))/1000);
res=天+“:“+小时+”:“+分钟+”:“+秒;
document.getElementsByClassName(“出现”)[0].textContent=res;
}, 1000);代码>
2019-04-13
21:21
“我需要类函数,因为我将在
在我的HTML文件中,我希望将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);
2019-04-13
21:21
2019-04-1310:21
setInterval(函数(){ var articlelements=document.getElementsByClassName(“日期”); 对于(var i=0;ivar total=articleDate+'T'+articledtime+':00'我已经试过几次了。但这里的问题是,我得到了一个错误的输出,例如-7042:-12:-20,但在我的例子中不是这样,我得到了@HienNguyen。但我不明白,当我不是从JSFIDLE运行它时,为什么这在我的代码中不起作用?编辑:已解决。感谢您提供简单的解决方案@hiennguyen为什么输出显示:-7042:-12:-22:-55?我有日期2019-04-13。今天是2019-04-12(欧洲)。我应该得到+,而不是-在建议的代码中,您在每次迭代中重新执行计算,而它是相同的算法。您应该在外部提取此文件loop@Weedoze感谢您的评论,但正如我所说的“这只是一个起点”,非常感谢@MarceloVismari。我也需要这个,因为我的HTML文件中有一个for循环,它用每个类名生成几个标记。我是通过Python和Flask来完成这项工作的。非常感谢。
const appears = document.getElementsByClassName("appear");
for (var i = 0; i < appears.length; i++) {
appears.item(i).innerHTML = res;
}
<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);