技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

js every()方法IE不支持的解決方法【親測有效】

作者:admin    時(shí)間:2022-4-22 13:57:39    瀏覽:

JS的every()方法,是判斷數(shù)組的所有元素是否都符合指定條件,符合就返回true,不符合就返回false。

不過不是所有瀏覽器都支持every()方法,比如低版本的IE瀏覽器(IE8以下)就不支持(IE11則支持)。

如果要讓every()方法在低版本IE里也有效,那么可以按照本文介紹的方法來處理,我在IE8里親測有效。

every()實(shí)例:檢測所有數(shù)組元素的大小

比如下面的實(shí)例代碼:

  //檢測數(shù)組中的所有元素是否都大于 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);

實(shí)例代碼用every()方法判斷數(shù)組中的所有元素是否都大于10,是就返回true,否則返回false。

上述實(shí)例代碼,在Chrome、Firefox,甚至包括IE11等主流瀏覽器,都能正常運(yùn)行。

IE8不支持every()方法

然而,在IE8里,則會(huì)有錯(cuò)誤提示:對(duì)象不支持此屬性或方法

 IE不支持js的every()方法

讓IE8也支持every()的方法

要使代碼能在IE8里有效運(yùn)行,我們可以在前面——注意是要在前面,加上以下代碼:

  //這個(gè)代碼一定要放在前面
  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里運(yùn)行了。

完整HTML代碼如下:

<!DOCTYPE>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
</head>

<body>
  <script type="text/javascript">

  //這個(gè)代碼一定要放在前面
  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;
    };
  }

  //檢測數(shù)組中的所有元素是否都大于 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

總結(jié)

JS的every()方法,不是所有瀏覽器都支持,本文介紹了讓該函數(shù)能在不支持的瀏覽器里也正常運(yùn)行的解決方法。

知識(shí)擴(kuò)展——javascript every() 方法詳解

JS的every()方法,是判斷數(shù)組的所有元素是否都符合指定條件,符合就返回true,不符合就返回false。

every() 基本語法:

arr.every(callback[, thisArg])

every()參數(shù)介紹:

 

every()方法說明:

every()方法為數(shù)組中的每個(gè)元素執(zhí)行一次 callback 函數(shù),直到它找到一個(gè)使 callback 返回 false(表示可轉(zhuǎn)換為布爾值 false 的值)的元素。如果發(fā)現(xiàn)了一個(gè)這樣的元素,every()方法將會(huì)立即返回 false。否則,callback 為每一個(gè)元素返回 true,every()就會(huì)返回 true。callback 只會(huì)為那些已經(jīng)被賦值的索引調(diào)用。不會(huì)為那些被刪除或從來沒被賦值的索引調(diào)用。

callback 被調(diào)用時(shí)傳入三個(gè)參數(shù):元素值,元素的索引,原數(shù)組。

every() 不會(huì)改變?cè)瓟?shù)組。

every() 遍歷的元素范圍在第一次調(diào)用 callback 之前就已確定了。在調(diào)用 every() 之后添加到數(shù)組中的元素不會(huì)被 callback 訪問到。如果數(shù)組中存在的元素被更改,則他們傳入 callback 的值是 every() 訪問到他們那一刻的值。那些被刪除的元素或從來未被賦值的元素將不會(huì)被訪問到。

您可能對(duì)以下文章也感興趣

標(biāo)簽: every函數(shù)  
相關(guān)文章
    x
    • 站長推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */