先ほど投稿したDOMの家族要素に追加や削除の機能をつけてみました。
備忘録として、書き込みさせていただきます。
※最初の子要素を消すと、複数一気に消えてしまう現象を何とかしたいです。
改善案がございましたらご教授いただけますと幸いです。
DOMcreateDelete.html
<br>
<button id="del1">最初の子を消去</button>
<button id="del2">最後の子を消去</button>
<br>
<button id="pre">頭に子を追加</button>
<button id="ape">後ろに子を追加</button>
<br>
<body class="first">
body=さらに先祖
<div class="ancestor">
ancientor=先祖
<div class="parent">
parent=親要素
<div class="prev">prev=直前にある兄弟要素</div>
<div class="base">
base=主とする要素<=
<div id ="ch1" class="child">ch1=子要素1</div>
<div id ="ch2" class="child">ch2=子要素2</div>
<div id ="ch3" class="child">ch3=子要素3</div>
</div>
<div class="next">next=直後にある兄弟要素</div>
</div>
</div>
<script>
//ボタンの要素を取得
let but = document.querySelectorAll("button");
console.dir(but);
//自分を取得
let me = document.querySelector(".base");
console.dir(me);
//親が兄弟を取得
let bros = document.querySelector(".parent").children;
console.dir(bros);
//親が自分を取得
console.dir(bros[1]);
//親の要素を取得
let per = document.querySelector(".base").parentElement;
console.dir(per);
//前の兄弟を取得
let bro1 = document.querySelector(".base").previousElementSibling;
console.dir(bro1);
//後ろの兄弟を取得
let bro2 = document.querySelector(".base").nextElementSibling;
console.dir(bro2);
//子のリストを取得
let chList = document.querySelector(".base").children;
console.dir(chList);
//子の最初を取得
let firCh = document.querySelector(".base").firstElementChild;
console.dir(firCh);
//最後の子を取得
let lasCh = document.querySelector(".base").lastElementChild;
console.dir(lasCh);
//先祖を取得
let anc = document.querySelector(".base").closest(".ancestor");
console.dir(anc);
//さらに先祖を取得
let anc2 = document.querySelector(".base").closest("body");
console.dir(anc2);
//新しく子を2つ生成
let newChi = document.createElement("div");
newChi.textContent = "appendChildでできた自分の子です";
me.appendChild(newChi);
let newChi2 = document.createElement("div");
newChi2.textContent = "appendChildでできた自分の子2です";
me.appendChild(newChi2);
//新しく兄弟を生成
let newBro = document.createElement("div");
newBro.textContent="appendchiledでできた兄弟です";
per.appendChild(newBro);
//兄弟(bro1)の子を生成
let broChi = document.createElement("div");
broChi.textContent="appendchiledでできたbro1の子です";
bro1.appendChild(broChi);
//兄弟(bro2)の子を生成
let broChi2 = document.createElement("div");
broChi2.textContent="appendchiledでできたbro2の子です";
bro2.appendChild(broChi2);
//関数1:最初の子を削除
const firChDel =()=>{
let target2 = document.querySelector(".base").firstElementChild;
target2.remove();
alert('最初の子をremoveで削除しました');
};
//無名関数:関数1を呼ぶ
let del1 = document.querySelector("#del1");
console.dir(del1);
del1.addEventListener("click", () => firChDel());
//関数2:最後の子を削除
const lasChDel =()=>{
let target = document.querySelector(".base").lastElementChild;
console.dir(target);
target.remove();
alert('最後の子をremoveで削除しました');
};
//無名関数:関数2を呼ぶ
let del2 = document.querySelector("#del2");
console.dir(del2);
del2.addEventListener("click", () => lasChDel());
//関数3:自分の先頭に子供を作る
const newFirCh =()=>{
let target3 = document.querySelector(".base").firstElementChild.parentElement;
let newCh1 = document.createElement("div");
newCh1.textContent="prependで先頭に新しく子を作りました";
console.dir(newCh1);
target3.prepend(newCh1);
alert('先頭に子を産みだしました');
};
//関数3呼び出し
let pre = document.querySelector("#pre");
console.dir(pre);
pre.addEventListener("click", () => newFirCh());
//関数4:自分の末尾に子供を作る
const newLasCh =()=>{
let target4 = document.querySelector(".base").lastElementChild;
let newCh2 = document.createElement("div");
newCh2.textContent="appendで末尾に新しく子を作りました";
console.dir(newCh2);
target4.append(newCh2);
alert('末尾に子を産みだしました');
};
//関数4呼び出し
let ape = document.querySelector("#ape");
console.dir(ape);
ape.addEventListener("click", () => newLasCh());
</script>
</body>