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

squ*_*yes 7 javascript jquery

我在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());
    });
});
Run Code Online (Sandbox Code Playgroud)

Vis*_*ioN 11

Number.isNaN

这是一项实验技术,是Harmony(EcmaScript 6)提案的一部分.由于此技术的规范尚未稳定,请检查兼容性表以了解各种浏览器的用法.另请注意,随着规范的变化,实验技术的语法和行为可能会在未来版本的浏览器中发生变化.

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

您应该使用标准isNaN方法:

if (isNaN( parseFloat(this.value) )) { ... }
Run Code Online (Sandbox Code Playgroud)

  • 这似乎是隐含的. (2认同)

sen*_*982 5

如果您将ES6与Babel一起使用在React中。您可以这样:

// pollyfills for older browsers
// core-js v2.x.x:
import 'core-js/es6/number'; 
// core-js v3.x.x:
import 'core-js/es/number'; 
Run Code Online (Sandbox Code Playgroud)

在package.json中添加依赖项以

"dependencies": {
    "core-js": "^2.5.5",
  }
Run Code Online (Sandbox Code Playgroud)