Javascript 为什么IE会给出这个错误:对象不';不支持属性或方法isNaN
我在IE 11中发现了这个错误:Javascript 为什么IE会给出这个错误:对象不';不支持属性或方法isNaN,javascript,jquery,Javascript,Jquery,我在IE 11中发现了这个错误: 对象不支持属性或方法isNaN JavaScript jQuery(document).ready(function($) { var $total = $('#total'), $value = $('.value'); $firstName = $('#firstname'); $lastName = $('#lastname'); $tour = $('#tour'); $pledge = $('#pledg
对象不支持属性或方法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());
});
});
这是一项实验技术,是Harmony(EcmaScript 6)的一部分
提议。因为这项技术的规格还没有稳定下来,,
检查在各种浏览器中的使用情况。还请注意
实验技术的语法和行为是一个主题
在未来版本的浏览器中随规范的更改而更改
大多数浏览器(包括IE11)仍然不支持它
您应该改用标准方法:
if (isNaN( parseFloat(this.value) )) { ... }
如果您正在使用ES6和Babel,请在React中使用。您可以这样做:
//旧浏览器的pollyfills
//core js v2.x.x:
导入“core js/es6/number”;
//core js v3.x.x:
导入“核心js/es/编号”;
在package.json中为
"dependencies": {
"core-js": "^2.5.5",
}
我有一个类似的问题,除了编译、捆绑和缩小后的React。为了解决这个问题,我重新定义了
编号。isNaN
:
if (!Number.isNaN) {
Object.defineProperty(Number, 'isNaN', {
value: function(value) {
return value !== value;
}
});
}
只需使用一个独立的
isNaN
方法,而不用从Number
对象调用它:if(isNaN(…)
。好吧,不要混淆窗口.isNaN
和Number.isNaN()。我认为后者是EcmaScript 6的一个特性。好的,谢谢。这到底是什么意思?看看为什么:是下一个JavaScript规范的一个非常新且仍处于实验阶段的功能。它在IE中根本不受支持。你可能把它与全局函数混淆了,全局函数在所有浏览器中都有支持。事实上,在IE的任何版本中都不支持。这似乎是隐含的。你能帮我实现你的解决方案吗?我不知道如何翻译它。花括号里是什么?@square\u eyes:Yikes,伙计,我想你真的想太多了。好的,修好了,谢谢@cookiemonster的聊天。我把枪掉了!,愚蠢的me.should应该是if(!Number.isNaN){
而不是if(!Number.isNaN){