2016-07-08 17 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

HTMLElement#textContentはIE8ではサポートされていません。

jQueryを使用していますが、jQueryを使用して回避するには、  —が最初に作成された理由の半分がブラウザの不一致に対処することでした(半分だけであり、もはや主な理由ではありません)。

最小限の変更は、あなたがそのコードと他の問題のいくつかを持っている

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

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

を変更することです。特に、あなたは餌食になりますThe Horror of Implicit Globals   —あなたの変数を宣言してください!そして、querySelectorの代わりにjQueryを使って要素を見つけることができます。だから、:

$(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); 
     } 
    } 
); 
関連する問題