我在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());
});
});
答案 0 :(得分:9)
Number.isNaN
这是一项实验技术,是和谐的一部分(EcmaScript 6) 提案。因为这项技术的规格还没有稳定, 检查compatibility table是否在各种浏览器中使用。另请注意 实验技术的语法和行为是主题 随着规范的变化,在未来版本的浏览器中进行更改。
大多数浏览器(包括IE11)仍然不支持它。
您应该使用标准isNaN
方法:
if (isNaN( parseFloat(this.value) )) { ... }
答案 1 :(得分:5)
如果您在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';
在package.json中为
添加依赖项"dependencies": {
"core-js": "^2.5.5",
}
答案 2 :(得分:0)
我有一个类似的问题,除了它来自React之后,它是经过编译,打包和缩小的。为了解决这个问题,我重新定义了Number.isNaN
:
if (!Number.isNan) {
Object.defineProperty(Number, 'isNaN', {
value: function(value) {
return value !== value;
}
});
}