序章
この記事は「そうだ!Bloggerの記事に目次を付けよう!」から始まる一連の「Bloggerの記事に目次をJavaScriptで自動的に付与する」シリーズの構成記事です。(2nd シリーズ)記事一覧は「Bloggerの記事に目次をJavaScriptで自動的に付与する - サポートページ」よりどうぞ。
2nd シリーズでは、1st シリーズで作成した目次機能に基本的な機能追加を行います。
今回の目的
2nd シリーズ第2回目の今回は以下の機能を実装します。目次の挿入先要素の id を変数として与えることで、様々なWebページ作成/Blogサービスにこの目次生成機能を導入できるようにする
今回の機能実装のポイント
今までの機能実装方法
前回の改良により、目次の挿入先は次のコードにより決定されるようになりました。
/*
目次の生成・挿入処理
*/
function generateIndex() {
/* 投稿本文が格納されている div 要素を発見し、目次を挿入する */
var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++) {
if (/^post-body-/.test(divs[i].id)) { /* 先頭一致 */
/* 投稿本文が格納されている div 要素発見時の処理 */
generateIndexForObj(divs[i]);
break;
}
}
}
if (/^post-body-/.test(divs[i].id)) の部分で、目次挿入先の要素の id かどうかを判定しています。
今回は、/^post-body-/ の部分を変数とし、自由に変えられるようにします。
改良後の機能実装方法
メソッド外に目次挿入先要素の id の正規表現用の変数を作成して、その変数を使って処理するように上のコードを改良しました。 /* 目次挿入先要素の id の正規表現 */
var regExp_id_obj_insert_index = new RegExp("^post-body-");
/*
目次の生成・挿入処理
*/
function generateIndex() {
/* 投稿本文が格納されている div 要素を発見し、目次を挿入する */
var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++) {
if (regExp_id_obj_insert_index.test(divs[i].id)) {
/* 投稿本文が格納されている div 要素発見時の処理 */
generateIndexForObj(divs[i]);
break;
}
}
}
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
これで、目次挿入先要素の id の正規表現用の変数を修正することで、Blogger 以外のブログや通常の Web ページなど、いろいろなものに対して目次を挿入することができます。
次回は「目次内のタグをそのまま使うのか削除するのか変数で制御」機能追加を行います。
「Bloggerの記事に目次をJavaScriptで自動的に付与する」シリーズ 記事一覧へ
コメントを投稿 (ここをクリックしてコメント投稿フォームを表示)
コメント投稿機能について