2016-08-15 23 views
-1

今回は、これが遭遇したのは今回が&で、今回は別の解決策を見つけるのではなく、質問を出すことにしました。DOM要素の組み込み関数を呼び出す

シナリオ: document.getElementsByClassNameから得られる要素のリストがあります。返されるリストは配列です。この返された配列にmap, find, filterのような組み込みの配列関数を使用できないのはなぜですか?

https://jsfiddle.net/xbka5pt2/

<div class="classy"></div> 
<div class="classy"></div> 
<div class="classy"></div> 
<div class="classy"></div> 
<div class="classy"></div> 

Javascriptを:私は&がリストアレイ上のマップ機能を使用しようとすると、TypeError: list.map is not a function

let list = document.getElementsByClassName("classy"); 
console.log(list); 
// the following returns a 'typeError': 
// "list.map is not a function" 
list.map(function(ele){ 
    console.log("ele is", ele); 
}); 

私はエラーを取得します。ありがとう。

+2

:もう一つの可能​​性は、このような[]オペレータでそれを呼び出すことであろうdocs/Web/API/HTMLCollection)。 – DavidDomain

+0

Davidに感謝します。私はそれをどのように配列に変換しますか? – Kayote

+1

ES6を使用しているので、簡単に 'Array.from(list)'を呼び出すことができます。 – DavidDomain

答えて

1

これは、getElementsByClassnameがHtmlCollectionを返すためです。

リストをパラメータとして配列からプロトタイプを呼び出して、各関数をマップすることができます。それは配列ではありませんので、それがライブ[HTMLCollection](https://developer.mozilla.org/de/ある0​​
[].map.call(list, function (el) {...}); 
+0

ありがとうございます。 – Kayote

関連する問題