実現したいこと
1ページに複数のdivを作成し、divごとの一番下に上下の隣り合ったdivへのリンクを自動で作成したいです。
そのために上下のdivの、規則性のない任意のidを取得したいのですが、上手くいきません。
前提
ゲームブック風のwebページを作成したいと思っています。
ページ分割などではなく、ページ内リンクで対処したいです。
該当のソースコード
<html> <head> </head> <body> <div id="setumei"> ページの説明 </div> <div class="topic" id="ccc"> 文章1 <span class="updown"></span> </div> <div class="topic" id="aaa"> 文章2 <span class="updown"></span> </div> <div class="topic" id="fff"> 文章3 <span class="updown"></span> </div> <div class="topic" id="ggg"> 文章4 <span class="updown"></span> </div> </body> </html>
該当のソースコード2
<span class="updown"></span>の中に以下のようなコードをjsで作成することを目指しています。
例)id="aaa"に作成したいコード
<ul> <li><a href="#ccc">上</a> <li><a href="#">最初から</a> <li><a href="#fff">下</a> </ul>
例)id="ggg"に作成したいコード
<ul> <li><a href="#fff">上</a> <li><a href="#">最初から</a> <li>下 </ul>
試したこと
ネットで見つけられた目次生成が一番近いと思い、それをいじってみましたが上手くいきませんでした。
自分ではリンク生成先が子要素だからではないかと考えているのですが、つぎはぎで作っているからかもしれず、よく分かっていません。
document.addEventListener('DOMContentLoaded', function () { const updown_class = 'updown'; const updown_contents = document.getElementsByClassName(updown_class); const child = document.querySelector('.topic'); let siblingPrev = child.previousElementSibling; let siblingNext = child.nextElementSibling; let siblingtPrevId = siblingPrev.id; let siblingtNextId = siblingNext.id; const ul = document.createElement('ul'); const li1 = document.createElement('li'); const a1 = document.createElement('a'); a1.innerHTML = '上'; a1.href = '#' + siblingtPrevId; const li2= document.createElement('li'); const a2 = document.createElement('a'); a2.innerHTML = "最初から"; a2.href = '#'; const li3 = document.createElement('li'); const a3 = document.createElement('a'); a3.innerHTML = "下"; a3.href = '#' + siblingtNextId; li1.appendChild(a1); li2.appendChild(a2); li3.appendChild(a3); const li = ['li1', 'li2', 'li3']; ul.appendChild(li); updown_contents.appendChild(ul); })