【问题标题】:Javascript countdown Timer doesnt work on Safari or IEJavascript 倒计时计时器在 Safari 或 IE 上不起作用
【发布时间】:2015-02-21 23:29:33
【问题描述】:

我有问题。我的 CountdownTimer 无法在 Safari 或 IE 上运行……怎么了? 也许这是常见的事情,IE 太可怕了,想要其他日期顺序。 也许有人有解决方案... 我不知道该写什么……但我必须添加更多文字才能发布此内容。 http://jsfiddle.net/4jdudnb1/1/

var jahr = 2015,
    monat = 2,
    tag = 15,
    stunde = 0,
    minute = 0,
    sekunde = 0;
var zielDatum = new Date(jahr, monat - 1, tag, stunde, minute, sekunde);

function countdown() {
    startDatum = new Date();
    if (startDatum < zielDatum) {
        var jahre = 0,
            monate = 0,
            tage = 0,
            stunden = 0,
            minuten = 0,
            sekunden = 0;
        while (startDatum < zielDatum) {
            jahre++;
            startDatum.setFullYear(startDatum.getFullYear() + 1);
        }
        startDatum.setFullYear(startDatum.getFullYear() - 1);
        jahre--;
        while (startDatum < zielDatum) {
            monate++;
            startDatum.setMonth(startDatum.getMonth() + 1);
        }
        startDatum.setMonth(startDatum.getMonth() - 1);
        monate--;
        while (startDatum.getTime() + (24 * 60 * 60 * 1000) < zielDatum) {
            tage++;
            startDatum.setTime(startDatum.getTime() + (24 * 60 * 60 * 1000));
        }
        stunden = Math.floor((zielDatum - startDatum) / (60 * 60 * 1000));
        startDatum.setTime(startDatum.getTime() + stunden * 60 * 60 * 1000);
        minuten = Math.floor((zielDatum - startDatum) / (60 * 1000));
        startDatum.setTime(startDatum.getTime() + minuten * 60 * 1000);
        tage += monate * 30;
        sekunden = Math.floor((zielDatum - startDatum) / 1000);
        if (tage < 10) {
            tage = "00" + tage;
        } else if (tage < 100) {
            tage = "0" + tage;
        }
        document.getElementById("svgdays").innerHTML = tage;
        if (monat < 10) {
            monat = "0" + monat;
        }
        if (stunden < 10) {
            stunden = "0" + stunden;
        }
        if (minuten < 10) {
            minuten = "0" + minuten;
        }
        if (sekunden < 10) {
            sekunden = "0" + sekunden;
        }
        document.getElementById("svghours").innerHTML = stunden;
        document.getElementById("svgminutes").innerHTML = minuten;
        document.getElementById("svgseconds").innerHTML = sekunden;
        setTimeout('countdown()', 200);
    } else {}
}
countdown();

提前致谢,圣诞快乐

【问题讨论】:

    标签: javascript internet-explorer svg safari jsfiddle


    【解决方案1】:

    在您的setTimeout 中去掉倒计时中的引号和括号

    这个

    setTimeout('countdown()', 200);
    

    应该是

    setTimeout(countdown, 200);
    

    此外,您无法访问 SVG 元素的 innerHTML,因此您必须使用 textContent

    这个

    document.getElementById("svghours").innerHTML = stunden;
    

    应该是

    document.getElementById("svghours").textContent = stunden;
    

    在 IE 中检查这个小提琴,它可以工作 http://jsfiddle.net/4jdudnb1/5/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2014-12-30
      • 1970-01-01
      • 2017-03-05
      相关资源
      最近更新 更多