2016-07-08 103 views
-1

以下querySelector功能不是在IE8的工作,但相同的是工作INT IE 11部分在IE8不工作

代碼:

$(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> 
+1

如果使用[MDN(https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector)來查找兼容性,它說,IE8可以使用'querySelector',但如果你跟進[CanIUse](http://caniuse.com/#feat=queryselector),你會發現'querySelector'在IE8中是有限的。改爲使用'document.getElementById'。 –

回答

3

IE8不支持HTMLElement#textContent

你使用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); 
     } 
    } 
);