速報

imgproxyのICO処理にコード実行のおそれ|4.0.16だけでは残る問題を確認

CATEGORY

【JavaScript】【children】n番目以外の子要素を抽出する

※本ページのリンクにはプロモーションが含まれています。

【JavaScript】【children】n番目以外の子要素を抽出する

目次

本記事では、JavaScriptでchildrenで取得した子要素からn番目以外の子要素を抽出する方法をご紹介しています。

JavaScriptでchildrenで取得した子要素から、指定したインデックス番号以外の要素を抽出したいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

スポンサーリンク

childrenで子要素を取得する

Elementのchildrenプロパティで指定した要素のすべての子要素を取得します。childrenプロパティはHTMLCollection形式で子要素を返します。

childrenプロパティで指定した要素の子要素を取得してみます。

HTML

<ul class="list js-list">
    <li class="list__item">1</li>
    <li class="list__item">2</li>
    <li class="list__item">3</li>
    <li class="list__item">4</li>
    <li class="list__item">5</li>
</ul>

JavaScript

const list = document.querySelector('.js-list');
const listItems = list.children;
console.log(listItems);

実行結果は下記の通りです。

実行結果

HTMLCollection(5)
0: li.list__item
1: li.list__item
2: li.list__item
3: li.list__item
4: li.list__item

ul要素が持つすべての子要素を取得することができました。続いて取得した子要素から指定したインデックス番号以外の要素を抽出する処理を作成します。

参考:https://developer.mozilla.org/ja/docs/Web/API/Element/children

childrenで取得した子要素からn番目以外の子要素を抽出する

childrenで取得した子要素からn番目以外の子要素を抽出します。

childrenプロパティで取得した要素はHTMLCollectionとなるため、データを扱いやすくするために配列に変更します。データの抽出には配列メソッドのfilterを使用します。

単数

指定するインデックス番号が単数の場合の実行例です。n番目の指定が一つの場合は、不等価演算子でインデックス番号と等しくない子要素を返します。

// 要素を取得する
const list = document.querySelector('.js-list');

// 取得した要素の子要素を取得する
const listItems = list.children;

// 子要素から3番目以外の子要素を抽出する
const newListItems = [...listItems].filter((el, i) => {
    return i !== 2;
});

// リストを空にして抽出した子要素を挿入する
list.innerHTML = '';
newListItems.forEach(item =>{
    list.appendChild(item);
});

複数

指定するインデックス番号が複数の場合の実行例です。インデックス番号を配列に格納し、includesを使って値を抽出します。

// 要素を取得する
const list = document.querySelector('.js-list');

// 取得した要素の子要素を取得する
const listItems = list.children;

// 子要素から3番目、4番目以外の子要素を抽出する
const newListItems = [...listItems].filter((el, i) => {
    return ![2, 3].includes(i);
});

// リストを空にして抽出した子要素を挿入する
list.innerHTML = '';
newListItems.forEach(item =>{
    list.appendChild(item);
});

これで指定した要素からn番目以外の子要素を抽出することができました。

参考:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

スポンサーリンク

最後に

ElementのchildrenはHTMLCollectionはを返すプロパティです。HTMLCollectionは生きたデータとなるため、取り扱いが難しいのが現状です。HTMLCollectionは使用できるメソッドもかなり限定さっれていうため、HTMLCollectionのデータは、一度配列化し、特定の処理を実行した後にHTMLに挿入する方法がよろしいかなと思います。

以上、JavaScriptのchildrenで取得した要素からn番目以外の子要素を抽出する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク