忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/05    04« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »06

見出し(h2, h3)に数字を JavaScript で振る

h2 と h3 をとってきて offsetTop でソートし、数字を付け加えるのみ。ついでに id も振っている。動作例

const list = [].concat.apply([], ['h2', 'h3'].map((tag) => {
    return Array.from(document.getElementsByTagName(tag)).map((d) => {
       return {
           dom: d, pos: d.offsetTop, tag: tag
       };
    });
})).sort((a,b) => {return a.pos - b.pos});
let major = 0;
let minor = 0;
list.forEach((d) => {
    const pastText = d.dom.textContent;
    if(d.tag === 'h2') {
        minor = 0;
        major++;
        d.dom.textContent = `${major}. ${pastText}`;
    }
    if(d.tag === 'h3') {
        minor++;
        d.dom.textContent = `${major}.${minor}. ${pastText}`;
    }
    d.dom.id = `header_${major}_${minor}`;
});
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R