Javascript 如何用倒计时替换特定的divs内容
我制作了一个脚本,从div:Javascript 如何用倒计时替换特定的divs内容,javascript,jquery,html,Javascript,Jquery,Html,我制作了一个脚本,从div:date HERE之间提取日期(文本),并从中倒计时,每1秒刷新一次 我的问题是:如果我在这里有多个divDATE,如何让脚本自动从这些div创建倒计时。我当前的脚本只有在页面中只有一个像这样的div时才有效 这是我的剧本: var targetDate = $(".countdown").text(); targetDate = new Date(targetDate).getTime(); // porneste counter-ul setInterval
date HERE
之间提取日期(文本),并从中倒计时,每1秒刷新一次
我的问题是:如果我在这里有多个divDATE
,如何让脚本自动从这些div创建倒计时。我当前的脚本只有在页面中只有一个像这样的div时才有效
这是我的剧本:
var targetDate = $(".countdown").text();
targetDate = new Date(targetDate).getTime();
// porneste counter-ul
setInterval(function() {
var currentDate = new Date().getTime();
var secondsLeft = (targetDate - currentDate) / 1000;
var days = parseInt(secondsLeft / 86400);
secondsLeft = secondsLeft % 86400;
var hours = parseInt(secondsLeft / 3600);
secondsLeft = secondsLeft % 3600;
var minutes = parseInt(secondsLeft / 60);
seconds = parseInt(secondsLeft % 60);
// afiseaza data rezultata
$(".countdown").html('<table cellspacing="0" border="0" cellpadding="0" width="328" align="center"><tr> <td width="82">'+days+'<span class="gray_text">d</span></td> <td width="82">'+hours+'<span class="gray_text">h</span></td> <td width="82">'+minutes+'<span class="gray_text">m</span></td> <td width="82">'+seconds+'<span class="gray_text">s</span></td> </tr></table>');
}, 1000);
var targetDate=$(“.countdown”).text();
targetDate=新日期(targetDate).getTime();
//色情柜台
setInterval(函数(){
var currentDate=new Date().getTime();
var secondsLeft=(targetDate-currentDate)/1000;
var天数=帕塞因特(secondsLeft/86400);
secondsLeft=secondsLeft%86400;
var小时数=parseInt(秒数/3600);
secondsLeft=secondsLeft%3600;
var分钟数=parseInt(秒/60);
秒=parseInt(秒英尺%60);
//阿菲塞扎数据公司
$(“.countdown”).html(“+days+'d'+hours+'h'+minutes+'m'+seconds+'s”);
}, 1000);
您是否尝试过each()
方法?
如果没有,测试它
$(“div.countdown”)。每个(函数()
{
//做点什么。
});代码>更改行$(“.countdown”).text()
到$(“.countdown:第一个子项”).text()代码>以便只读取一个文本节点。否则$(“.countdown”).text()
将是一个类似于2013-10-11 2013-10-11 2013-10-11 2013-10-11
的字符串,不能正确解析为日期
您需要使用.each()
。比如:
$('.countdown').each(function() {
var $this = $(this),
text = $this.text(),
targetDate = new Date(text).getTime();
setInterval(function() {
var currentDate = new Date().getTime();
var secondsLeft = (targetDate - currentDate) / 1000;
var days = parseInt(secondsLeft / 86400);
secondsLeft = secondsLeft % 86400;
var hours = parseInt(secondsLeft / 3600);
secondsLeft = secondsLeft % 3600;
var minutes = parseInt(secondsLeft / 60);
seconds = parseInt(secondsLeft % 60);
// afiseaza data rezultata
$this.html('<table cellspacing="0" border="0" cellpadding="0" width="328" align="center"><tr> <td width="82">'+days+'<span class="gray_text">d</span></td> <td width="82">'+hours+'<span class="gray_text">h</span></td> <td width="82">'+minutes+'<span class="gray_text">m</span></td> <td width="82">'+seconds+'<span class="gray_text">s</span></td> </tr></table>');
});
});
$('.countdown')。每个(函数(){
变量$this=$(this),
text=$this.text(),
targetDate=新日期(文本).getTime();
setInterval(函数(){
var currentDate=new Date().getTime();
var secondsLeft=(targetDate-currentDate)/1000;
var天数=帕塞因特(secondsLeft/86400);
secondsLeft=secondsLeft%86400;
var小时数=parseInt(秒数/3600);
secondsLeft=secondsLeft%3600;
var分钟数=parseInt(秒/60);
秒=parseInt(秒英尺%60);
//阿菲塞扎数据公司
$this.html(''+days+'d'+hours+'h'+minutes+'m'+seconds+'s');
});
});
如果所有div包含相同的日期,则必须获取第一个div(或任何其他…)的日期,因此必须更改此行:
var targetDate = $($(".countdown")[0]).text();
如果每个div都有自己的日期,那么解决方案就有点困难。可以设置每个div的初始值并将其存储在DOM中的“data-x”属性中,然后在setinterval函数中必须设置一个循环并读取为每个div存储的初始值。例如,要存储所有值:
function storeDates(){
$(".countdown").attr("data-initialDate", $(".countdown").html());}
您有多个div
元素具有类countdown
,并且您希望能够以不同的方式针对它们,是吗?是的。我有不同的日期在每个分区。为什么你要添加这个,而不是我的方式<代码>变量$this=$(this),text=$this.text(),targetDate=新日期(text.getTime()
@sorinu26在.each()
函数中,此
将引用当前迭代的DOM元素。因此,如果您有3个“.countdown”div,$(“.countdown”)。每个(function(){console.log(this);})
将按照在页面上找到的顺序记录每个DOM元素。按照您的操作方式,$('.countdown').text()
将只返回使用该选择器找到的第一个元素的文本。