サイト記事の目次を自動作成〜JavaScript8行でOK。

〽️ コンテンツの「質」に集中できる環境を。 〽️ まずは表示させてみる。 〽️ クリックしてジャンプできるよう実装。 〽️コーダーなら自作しようぜ。







コンテンツの「質」に集中できる環境を。

こんにちは、「ふ」です。
最近ブログを閲覧していると、headerの少し下に「目次」を置いているページをよく見かけるようになりました。ユーザに記事の全体像を見てもらって、知りたい情報にアクセスしやすくする。有効な事だと思います。

然し乍ら、ページの量産体制に入った時にはいちいち<h2>タグの内容を書き出して目次を作成するのは結構な手間となってしまいます。

また過去にアップした記事それぞれに目次を設定する、骨の折れる作業ですね。

自動化させてしまおう。

<h2>〜</h2>タグに書かれた内容を検出し、自動で目次を作成する仕組みがあれば素敵なのでは?
これ、簡単なJavaScriptを仕込む事で実装することができます。

今回はその方法について紹介したいと思います。少しでもページ作成を効率化して、コンテンツの「質」に集中できる環境を作りましょう。











まずは表示させてみる。


以下のような構成のページがあるとします。

HTML

タイトル

見出し1

・・・・・・

見出し2

・・・・・・

見出し3

・・・・・・

ここに目次エリアを挿入しておきます。わかりやすいように軽くCSSで装飾しておきますね。



タイトル

「「1<div id = "mokuji">

もくじ

</div>」」

見出し1

・・・・・・



ブラウザ



見出し1~3の間隔をテキトーにとっています。
この" mokuji "エリアに、見出しである<h2>〜</h2>内のテキストを順に取り出し追加していきましょう。



JavaScript

「「3//目次部分を取得」」 var mokuji = document.getElementById("mokuji"); 「「3//<h2>を全て取得」」 var midasi = document.getElementsByTagName("h2"); 「「3//<h2>の数だけfor文で処理を実行」」 for (i = 0; i < midasi.length; i++) { 「「3//<p>要素を生成」」 var koumoku = document.createElement("p"); 「「3//作った<p>に<h2>の内容を代入」」 koumoku.innerHTML = midasi[i].innerText; 「「3//目次部分に追加」」 mokuji.appendChild(koumoku); }

扨(さて)、プレビューしてみます。。

ブラウザ

できましたね ♪ 表示するだけなら、7行のコードです。





 

クリックしてジャンプできるよう実装。


<h2>のテキストを取り出して目次部分に表示する実装には成功しました。
ただし、今作っている媒体はwebページ。

折角なので、クリック(タップ)するとその場所にジャンプできるよう「アンカー」を仕込みましょう。作戦としては以下のようになります。

作戦。

◼︎ジャンプ元(目次の項目)のコード

<p>見出し[n]</p>
⬇︎
<p> <a href = "#ジャンプ先のid名"> 見出し[n] </a> </p>

◼︎ジャンプ先(h2)のコード

<h2>見出し[n]</h2>
⬇︎
<h2 id = "id名"> 見出し[n] </h2>


このように書き換えたいと思います。JavaScriptコードを追加・変更していきましょう。



JavaScript

var mokuji = document.getElementById("mokuji"); var midasi = document.getElementsByTagName("h2"); 「「3//for文の中身を書き換えアンカーを仕込む」」 for (i = 0; i < midasi.length; i++) { var koumoku = document.createElement("p"); 「「3//作った<p>をリンク付きにする」」 「「1koumoku.innerHTML = '「「5」」' + midasi[i].innerText + '「「5」」'; 」」 「「3//<h2>にアンカーポイントを仕込む」」 「「1midasi[i].outerHTML = '「「5

」」' + midasi[i].innerText + '「「5

」」';」」 「「3//目次部分に追加」」 mokuji.appendChild(koumoku); }

プレビューしてみましょう。

ブラウザ

ちゃんとアンカーが仕込まれていますね。
8行しか書いていないのに、実装することができました。





 

コーダーなら自作しようぜ。

今回は「もくじ」の自動作成について紹介しました。CSSでお好みのデザインにして使ってくださいね。
たった8行で実装できてしまう「もくじ」の自動作成。外部プラグインを使うよりも手軽だと思います。

これに限らずあなたならではの「作業効率化」のアイデアが浮かんだら、どんどん自作していきましょう!

あ。この本よかったですよ。











関連記事











「ふ」です。

swift、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。

🐧 twitter 🐧