为什么IE给出此错误:对象不支持属性或方法是isNaN



我在IE 11中得到这个错误:

Object doesn't support property or method isNaN

JavaScript

jQuery(document).ready(function($) {
    var $total = $('#total'),
    $value = $('.value');
    $firstName = $('#firstname');
    $lastName = $('#lastname');
    $tour = $('#tour');
    $pledge = $('#pledge');
    $currency = $('#currency');
    $distance = $('#distance');
    $riders = $('#riders');
    $(':input').on('input change', function(e) {
        var total = 1;
        $value.each(function(index, elem) {
            if(!Number.isNaN(parseFloat(this.value)))
                total = total * parseFloat(this.value);
        });
        $total.val(total/10);
        $('#pledgefirstname').text($firstName.val());
        $('#pledgelastname').text($lastName.val());
        $('#pledgetour').text($tour.val());
        $('#pledgepledge').text($pledge.val());
        $('#pledgecurrency').text($currency.val());
        $('#pledgecurrency2').text($currency.val());
        $('#pledgecurrency3').text($currency.val());
        $('#pledgecurrency4').text($currency.val());
        $('#pledgetotal').text($total.val());
        $('#pledgetotal2').text($total.val());
        $('#pledgedistance').text($distance.val());
        $('#pledgeriders').text($riders.val());
    });
});
<标题> Number.isNaN h1> 是一项实验性技术,是Harmony (EcmaScript 6)的一部分。建议。由于这项技术的规格尚未稳定,请查看兼容性表以了解不同浏览器的使用情况。还要注意实验技术的语法和行为是主体

大多数浏览器(包括IE11)仍然不支持。

您应该使用标准的isNaN方法:

if (isNaN( parseFloat(this.value) )) { ... }

如果你在React中使用ES6和Babel。你可以这样做:

// pollyfills for older browsers
// core-js v2.x.x:
import 'core-js/es6/number'; 
// core-js v3.x.x:
import 'core-js/es/number'; 

在包中添加依赖项。Json for

"dependencies": {
    "core-js": "^2.5.5",
  }

我有一个类似的问题,除了它来自React编译,捆绑和最小化之后。为了解决这个问题,我重新定义了Number.isNaN:

if (!Number.isNaN) {
  Object.defineProperty(Number, 'isNaN', {
    value: function(value) {     
      return value !== value;
    }
  });
}

最新更新