Javascript 如何用倒计时替换特定的divs内容

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

我制作了一个脚本,从div:
date HERE
之间提取日期(文本),并从中倒计时,每1秒刷新一次

我的问题是:如果我在这里有多个div
DATE
,如何让脚本自动从这些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()
将只返回使用该选择器找到的第一个元素的文本。