0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DOMの親子要素の追加・削除をじっくり勉強してみた

Last updated at Posted at 2022-06-27

先ほど投稿した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>

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?