JavaScript のElement オブジェクトに .innerHTML
のプロパティがあります。この.innerHTML
は、要素内の HTML を取得したり設定するプロパティです。
一方.outerHTML
は、要素自身と要素に含まれる HTML を取得したり設定するプロパティです。
この記事では、.outerHTML
を使って指定のタグを div
タグで括る方法について解説します。
.outerHTML
JavaScriptの.outerHTML
は、要素自身と要素に含まれる HTML を取得したり設定するプロパティです。
const content = element.outerHTML;
この記事ではこの.outerHTML
を使って、指定のタグ全部を ループを使って div
タグで全て括るスニペットについてご紹介しています。
ボタンクリックでdivタグで括られるサンプル
早速サンプルですが、ボタンをクリックすると「その1〜その5」までの p
タグの要素が、 div
タグで括られるようになります。
その1
その2
その3
その4
その5
変わったことが分かりやすいように、div
タグが付くと色が変わるようにCSSを追記しています。
変更前・後のコード
上記の見た目の変化だけだと分かりづらいので、コードの変化についても紹介しておきます。
まずは、div
タグが追記される前のコードは以下の通りです。
<ul class="sampleList">
<li><p>その1</p></li>
<li><p>その2</p></li>
<li><p>その3</p></li>
<li><p>その4</p></li>
<li><p>その5</p></li>
</ul>
上記のコードに、JavaScriptのコードを加えると、p
タグが 「class=’midashi’」の付いたdiv
で括られます。
<ul class="sampleList">
<li><div class='midashi'><p>その1</p></div></li>
<li><div class='midashi'><p>その2</p></div></li>
<li><div class='midashi'><p>その3</p></div></li>
<li><div class='midashi'><p>その4</p></div></li>
<li><div class='midashi'><p>その5</p></div></li>
</ul>
実装の手順と方法
コードの解説の前に、実装の手順と方法について解説します。
この記事のコードをそのまま使うことはないと思いますが、念の為の解説です。
はじめに、HTMLを記述します。
上記は、JavaScriptを動かす用のコードなので、どのような形式でも大丈夫ですが、後述のJavaScriptと連動させる必要があります。
<ul class="sampleList">
<li><p>その1</p></li>
<li><p>その2</p></li>
<li><p>その3</p></li>
<li><p>その4</p></li>
<li><p>その5</p></li>
</ul>
連動させるのは、JavaScriptのコード1行目にある.querySelectorAll
に入る指定タグなので、それが含有されるコードを記述するようにしましょう。
次に、JavaScriptのコードをHTMLを設置したページに記述します。
コードは <body>〜</body>
で、</body>
の閉じタグ(クロージングタグ)の前に記述しましょう。
//pタグを取得
const x = document.querySelectorAll('.sampleList li p');
//一致したpタグをループで回す
for (i = 0; i < x.length; i++) {
x[i].outerHTML = "<div class='midashi'>" + x[i].outerHTML + "</div>";
}
console.log(x);
},
これで記述は完了です。
ざっくりとしたコードの解説
コードはHTMLとJavaScriptの2種類です。この記事のスニペットでは、見た目をさほどいじっていないので、CSSは割愛させてください。
HTML
HTMLは li
のリストタグの中に p
タグが入ったシンプルな構造です。
<ul class="sampleList">
<li><p>その1</p></li>
<li><p>その2</p></li>
<li><p>その3</p></li>
<li><p>その4</p></li>
<li><p>その5</p></li>
</ul>
サンプルに作っているものなので、特段の解説はないですが、JavaScriptのコード1行目.querySelectorAll
で指定するタグが入るように記述しましょう。
JavaScript
JavaScriptは、まずはじめに「p
タグを取得」して、取得した p
タグ全てに「div タグで括るループ」を動かすコード内容です。
//pタグを取得
const x = document.querySelectorAll('.sampleList li p');
//一致したpタグをループで回す
for (i = 0; i < x.length; i++) {
x[i].outerHTML = "<div class='midashi'>" + x[i].outerHTML + "</div>";
}
console.log(x);
},
ループの中で.outerHTML
を記述して、そこで「どのようなタグで括らせるか?」を指定します。
さいごに
静的なページであれば、「.outerHTML
を使って div
タグを追加」なんてことはほぼないと思いますが、動的なサイトで指定タグを追加する時などに使えると思います。
是非参考にしてみてください。