技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

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里,则会有错误提示:对象不支持此属性或方法

 IE不支持js的every()方法

让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

demodownload

总结

JS的every()方法,不是所有浏览器都支持,本文介绍了让该函数能在不支持的浏览器里也正常运行的解决方法。

知识扩展——javascript every() 方法详解

JS的every()方法,是判断数组的所有元素是否都符合指定条件,符合就返回true,不符合就返回false

every() 基本语法:

arr.every(callback[, thisArg])

every()参数介绍:

 

every()方法说明:

every()方法为数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every()方法将会立即返回 false。否则,callback 为每一个元素返回 trueevery()就会返回 truecallback 只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用。

callback 被调用时传入三个参数:元素值,元素的索引,原数组。

every() 不会改变原数组。

every() 遍历的元素范围在第一次调用 callback 之前就已确定了。在调用 every() 之后添加到数组中的元素不会被 callback 访问到。如果数组中存在的元素被更改,则他们传入 callback 的值是 every() 访问到他们那一刻的值。那些被删除的元素或从来未被赋值的元素将不会被访问到。

您可能对以下文章也感兴趣

标签: every函数  
相关文章
    x
    • 站长推荐
    /* 左侧显示文章内容目录 */