js every()方法IE不支持的解决方法【亲测有效】
作者:admin 时间:2022-4-22 13:57:39 浏览:JS的every()
方法,是判断数组的所有元素是否都符合指定条件,符合就返回true
,不符合就返回false
。
不过不是所有浏览器都支持every()
方法,比如低版本的IE浏览器(IE8以下)就不支持(IE11则支持)。
如果要让every()
方法在低版本IE里也有效,那么可以按照本文介绍的方法来处理,我在IE8里亲测有效。
every()实例:检测所有数组元素的大小
比如下面的实例代码:
//检测数组中的所有元素是否都大于 10
function isBigEnough(element, index, array) {
return(element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough); // passed is false
console.log(passed);
alert(passed);
passed = [12, 54, 18, 130, 44].every(isBigEnough); // passed is true
console.log(passed);
alert(passed);
实例代码用every()
方法判断数组中的所有元素是否都大于10,是就返回true
,否则返回false
。
上述实例代码,在Chrome、Firefox,甚至包括IE11等主流浏览器,都能正常运行。
IE8不支持every()方法
然而,在IE8里,则会有错误提示:对象不支持此属性或方法。
让IE8也支持every()的方法
要使代码能在IE8里有效运行,我们可以在前面——注意是要在前面,加上以下代码:
//这个代码一定要放在前面
if(!Array.prototype.every) {
Array.prototype.every = function(fun /*, thisArg */ ) {
'use strict';
if(this === void 0 || this === null) throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if(typeof fun !== 'function') throw new TypeError();
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for(var i = 0; i < len; i++) {
if(i in t && !fun.call(thisArg, t[i], i, t)) return false;
}
return true;
};
}
这样,every()
方法就可以在IE8里运行了。
完整HTML代码如下:
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
//这个代码一定要放在前面
if(!Array.prototype.every) {
Array.prototype.every = function(fun /*, thisArg */ ) {
'use strict';
if(this === void 0 || this === null) throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if(typeof fun !== 'function') throw new TypeError();
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for(var i = 0; i < len; i++) {
if(i in t && !fun.call(thisArg, t[i], i, t)) return false;
}
return true;
};
}
//检测数组中的所有元素是否都大于 10
function isBigEnough(element, index, array) {
return(element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough); // passed is false
console.log(passed);
alert(passed);
passed = [12, 54, 18, 130, 44].every(isBigEnough); // passed is true
console.log(passed);
alert(passed);
</script>
</body>
</html>
输出:
false
true
总结
JS的every()
方法,不是所有浏览器都支持,本文介绍了让该函数能在不支持的浏览器里也正常运行的解决方法。
知识扩展——javascript every() 方法详解
JS的every()
方法,是判断数组的所有元素是否都符合指定条件,符合就返回true
,不符合就返回false
。
every()
基本语法:
arr.every(callback[, thisArg])
every()
参数介绍:
every()
方法说明:
every()
方法为数组中的每个元素执行一次 callback
函数,直到它找到一个使 callback
返回 false
(表示可转换为布尔值 false
的值)的元素。如果发现了一个这样的元素,every()
方法将会立即返回 false
。否则,callback
为每一个元素返回 true
,every()
就会返回 true
。callback
只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用。
callback
被调用时传入三个参数:元素值,元素的索引,原数组。
every()
不会改变原数组。
every()
遍历的元素范围在第一次调用 callback
之前就已确定了。在调用 every()
之后添加到数组中的元素不会被 callback
访问到。如果数组中存在的元素被更改,则他们传入 callback
的值是 every()
访问到他们那一刻的值。那些被删除的元素或从来未被赋值的元素将不会被访问到。
您可能对以下文章也感兴趣
标签: every函数
- 站长推荐