我在这个脚本的第5行有一个JS错误(var el = this [key];)。它适用于FF,Chrome,Safari但不适用于IE。有人可以帮帮我吗?
Object.prototype.between = function( value )
{
var value = parseFloat(value);
for (key in this) {
var el = this[key];
var v = key.split('-');
var min = parseFloat(v[0]);
var max = parseFloat(v[1]);
if (value >= min && value < max) { return el; }
}
return false;
}
感谢您提前
答案 0 :(得分:2)
您最有可能遇到“未经过滤的问题”。当迭代for / in循环时,IE遍历对象的所有属性和方法,以包括它从原型获得的那些属性和方法。这导致了一些问题,因为您的代码通常认为它只会遇到某种属性。最常用的for / in过滤方法如下所示,我确保当前元素实际上是被迭代对象的属性,而不仅仅是被继承的东西。通过确保当前属性与您期望的类型,实例或值完全相同,您可以在此类检查中获得更具体的信息。
Object.prototype.between = function( value )
{
var value = parseFloat(value);
for (key in this) {
if( Object.prototype.hasOwnProperty.call( key, this ) ) {
var el = this[key];
var v = key.split('-');
var min = parseFloat(v[0]);
var max = parseFloat(v[1]);
if (value >= min && value < max) { return el; }
}
}
return false;
}
如评论中所述,您可以对代码执行其他操作,以使其更加可靠并且不易出错。您应该开始养成通过http://www.jshint.com
运行所有代码的习惯