javascript 的一部分在 IE8 中不工作

Part of javascript not working in IE8

以下 querySelector 功能在 IE8 中不起作用,但在 IE 11 中同样有效。

代码:

    $(document).ready(
        function() {

            $(window).load(
                    function() {
                        var fiveMinutes = 60 * 15, display = document
                                .querySelector('#time');
                        startTimer(fiveMinutes, display);
                    });

            function startTimer(duration, display) {
                var timer = duration, minutes, seconds;
                setInterval(function() {
                    minutes = parseInt(timer / 60, 10)
                    seconds = parseInt(timer % 60, 10);

                    minutes = minutes < 10 ? "0" + minutes : minutes;
                    seconds = seconds < 10 ? "0" + seconds : seconds;

                    display.textContent = minutes + ":" + seconds;

                    if (--timer < 0) {
                        timer = duration;
                    }
                }, 1000);
            }

HTML代码:

   <div >
    <div id ="timer">
        Next Refresh will be in <span id="time">05:00</span> minutes!
    </div>
    <div>

HTMLElement#textContent IE8 不支持。

您正在使用 jQuery,让我们使用 jQuery 来解决这个问题 - 最初创建它的一半原因是为了处理浏览器不一致(只有一半,这不再是它的主要目的存在的原因)。

最小的变化就是改变

display.textContent = minutes + ":" + seconds;

$(display).text(minutes + ":" + seconds);

您对该代码还有其他一些问题。特别是,您正在成为 The Horror of Implicit Globals 的牺牲品——声明您的变量!您可以使用 jQuery 来查找元素,而不是使用 querySelector。所以:

$(document).ready(
    function() {

        $(window).load(
            function() {
                var fiveMinutes = 60 * 15,
                    display = $("#time");            // Use jQuery to look this up
                startTimer(fiveMinutes, display);
            });

        function startTimer(duration, display) {
            var timer = duration,
                minutes, seconds;
            setInterval(function() {
                // Note the variable declarations
                var minutes = parseInt(timer / 60, 10)
                var seconds = parseInt(timer % 60, 10);

                minutes = minutes < 10 ? "0" + minutes : minutes;
                seconds = seconds < 10 ? "0" + seconds : seconds;

                display.text(minutes + ":" + seconds);      // Use text() to set the text

                if (--timer < 0) {
                    timer = duration;
                }
            }, 1000);
        }
    }
);