【问题标题】:Java script code not working in Internet Explorer while working perfectly fine in Google ChromeJava 脚本代码无法在 Internet Explorer 中运行,而在 Google Chrome 中运行良好
【发布时间】:2020-08-26 15:24:06
【问题描述】:

此代码在 Google Chrome 中运行良好,但在 Internet Explorer 中无法运行。

它是用 JavaScript 编写并与 HTML 一起使用的计时器代码。

如果有人可以帮助控制台 Chrome 和 Internet Explorer 屏幕截图也附上。它们没有显示任何错误。

function makeTimer() {

  //		var endTime = new Date("29 April 2018 9:56:00 GMT+01:00");	
  var endTime = new Date("19 May 2020 17:30:00 GMT+05:00");
  endTime = (Date.parse(endTime) / 1000);

  var now = new Date();
  now = (Date.parse(now) / 1000);

  var timeLeft = endTime - now;

  var days = Math.floor(timeLeft / 86400);
  var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
  var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600)) / 60);
  var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));

  if (hours < "10") {
    hours = "0" + hours;
  }
  if (minutes < "10") {
    minutes = "0" + minutes;
  }
  if (seconds < "10") {
    seconds = "0" + seconds;
  }

  $("#days").html(days + "<span>Days</span>");
  $("#hours").html(hours + "<span>Hours</span>");
  $("#minutes").html(minutes + "<span>Minutes</span>");
  $("#seconds").html(seconds + "<span>Seconds</span>");

}

setInterval(function() {
  makeTimer();
}, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="d-inline-block py-3" id="timer">
  <div class="d-inline-block px-3" id="days" style="border-right:1px solid white; color:#44cbe1"></div>
  <div class="d-inline-block px-3" id="hours" style="border-right:1px solid white; color:#44cbe1"></div>
  <div class="d-inline-block px-3" id="minutes" style="border-right:1px solid white; color:#44cbe1"></div>
  <div class="d-inline-block px-3" id="seconds" style="color:#44cbe1"></div>
</div>

【问题讨论】:

  • 显示没有错误的工作浏览器的屏幕截图是没有意义的...显示 IE 控制台的输出...
  • 现在附上两张截图。
  • 你已经看过这里了吗? stackoverflow.com/questions/13091523/…
  • 错误是明确的,它表示您忘记在某处关闭标签(
    或其他)。我认为这与您的 JS 代码无关。 Chrome 会原谅一些类似的小错误,而 IE 不会。
  • 是的,我设法关闭了所有标签,现在屏幕截图已更新。但错误仍然相同
  • 标签: javascript html javascript-objects


    【解决方案1】:
    19 May 2020 17:30:00 GMT+05:00
    

    在IE中无效应该是:

    19 May 2020 17:30:00 GMT+0500
    

    我猜 Chrome 在 Date 对象中有更好的解析器,并且可以容忍不同的格式

    【讨论】:

      【解决方案2】:

      问题

      问题在于Date.parse。从 ES6 开始,它的解析行为是标准化的,因此大多数现代浏览器都非常一致地支持它。

      然而,正如MDN 指出的那样,解析行为在 ES5 之前是依赖于实现的,并且在不同浏览器之间存在很大差异。

      由于没有任何版本的 Internet Explorer 完全支持 ES6,问题是 IE 的解析器无法解析日期,因此返回 NaN

      无需使用Date.parse

      当您尝试 parse Date 对象时,您可以简单地将它们转换为具有相同效果的数字。

      由于除法 (/) 自动将其操作数转换为数字,您可以完全省略 Date.parse

      function makeTimer() {
      
        //		var endTime = new Date("29 April 2018 9:56:00 GMT+01:00");	
        var endTime = new Date("19 May 2020 17:30:00 GMT+05:00");
        endTime = (endTime / 1000);
      
        var now = new Date();
        now = (now / 1000);
      
        var timeLeft = endTime - now;
      
        var days = Math.floor(timeLeft / 86400);
        var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
        var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600)) / 60);
        var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
      
        if (hours < "10") {
          hours = "0" + hours;
        }
        if (minutes < "10") {
          minutes = "0" + minutes;
        }
        if (seconds < "10") {
          seconds = "0" + seconds;
        }
      
        $("#days").html(days + "<span>Days</span>");
        $("#hours").html(hours + "<span>Hours</span>");
        $("#minutes").html(minutes + "<span>Minutes</span>");
        $("#seconds").html(seconds + "<span>Seconds</span>");
      
      }
      
      setInterval(function() {
        makeTimer();
      }, 1000);
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <div class="d-inline-block py-3" id="timer">
        <div class="d-inline-block px-3" id="days" style="border-right:1px solid white; color:#44cbe1"></div>
        <div class="d-inline-block px-3" id="hours" style="border-right:1px solid white; color:#44cbe1"></div>
        <div class="d-inline-block px-3" id="minutes" style="border-right:1px solid white; color:#44cbe1"></div>
        <div class="d-inline-block px-3" id="seconds" style="color:#44cbe1"></div>
      </div>

      【讨论】:

      • 您仍在解析构造函数中的日期,所以我不会说您的省略日期完全解析。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多