【Javascript】HTML文字列からNodeに変換する方法


当記事ではHTML文字列からNodeに変換する方法について記します。




HTML文字列からNodeに変換

これはとても簡単で1行で関数を定義できます。
ここから先は補足情報になります。

const toNode = (str) => document.createRange().createContextualFragment(str)
const elem = toNode('<p id="hoge" class="hoge">hoge</p><p>foo</p>')





変換したNodeに対してはDOM操作ができる

先ほどの方法で変換したNodeは、正式にはDocumentFragmentというのですがノードの一種です。
通常のようにDOM操作が行えます。
getElementsByClassNameメソッドはなぜか使えないようなので注意が必要です。

const toNode = (str) => document.createRange().createContextualFragment(str)
const elem = toNode('<p id="hoge" class="hoge">hoge</p><p>foo</p>')

console.log(elem)
console.log(elem.getElementById('hoge'))
// console.log(elem.getElementsByClassName('hoge'))
console.log(elem.querySelector('#hoge'))
console.log(elem.querySelectorAll('.hoge'))
console.log(elem.children)
console.log(elem.childElementCount)
console.log(elem.firstElementChild)
console.log(elem.lastElementChild)
elem.append(toNode('<p>piyo</p>'))





変換したNodeはそのままDOMに追加できる

先ほどの方法で変換したNodeはそのままDOMに追加する事ができます。

const toNode = (str) => document.createRange().createContextualFragment(str)
const elem = toNode('<p id="hoge" class="hoge">hoge</p><p>foo</p>')

document.body.append(elem)






以上、HTML文字列からNodeに変換する方法でした。

スポンサーリンク

You can subscribe by SNS

スポンサーリンク

コメントを残す

*