[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
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}`; });
ただいまコメントを受けつけておりません。