NodeList からノードを直接削除できますか? 質問する

NodeList からノードを直接削除できますか? 質問する

document.getElementsByTagNameNodeList オブジェクトが返されました。

いくつかの項目を削除したいです(NodeListから最初の項目を削除したいとします)

それを実行する方法はありますか? (すべてのノードを手動で配列にコピーできることはわかっていますが、NodeList 自体に要素を削除する関数がすでにある場合は、それを行いたくありません)

NodeList から項目を削除しても表示には影響がないことは承知しています (ブラウザーの表示の更新などが発生することはありません。NodeList オブジェクトがそのノードへの参照を保持することを望まないだけです)。

それを実行する方法はありますか? (または、NodeList 内のすべての項目を配列にコピーする必要がありますか?)

ベストアンサー1

ご覧の通り、仕様リストから要素を削除する方法はありません。

いずれにしても意味をなさない。これNodeListライブつまり、特定のプロパティ(例:)にアクセスするたびにDOMが再度検索されますlengthMDCC:

(...) 返されるリストはライブです。つまり、DOM ツリーで自動的に更新されます。 (...)

だからあなたはしなければならないノードを配列にコピーします。

ただし、メソッドを使用すると、これを非常に簡単に行うことができますArray。たとえば、コピーして最初の要素を直接削除するには、次のようにします。

var nodes = [].slice.call(elements, 1); 

NodeList配列のようなオブジェクトです。したがって、配列関数を次のように適用することができます。call [ドキュメント]. は[].slice、参照を取得するための単なる省略形です。slice [ドキュメント]方法。

おすすめ記事