JavaScript HTMLの子要素に対してループ処理をしたい時の注意点
以下のようなHTMLがあり、id="parent"の子要素のdivのtextをすべてつなげた文字列を取得したいとします。
<div id="parent">
<div>aaa</div>
<div>bbb</div>
<div>ccc</div>
</div>
取得したい結果。
aaa,bbb,ccc
子要素をすべて取得して、それらをループで回してtextを結合すれば良いのですが、以下のようにやるとエラーになります。
const parent = document.getElementById('parent');
const children = parent.children;
const result = children.map(c => c.innerText).join(); //Uncaught TypeError: children.map is not a function
理由は、childrenは普通のArrayではなく、HTMLCollection というインターフェースであるため、map がないからです。
この場合、Array.from を使って配列に変換してあげるとうまくいきます。
const parent = document.getElementById('parent');
const children = Array.from(parent.children);
const result = children.map(c => c.innerText).join();
最近のコメント