JS ノードの編集方法 追加・削除・置換・挿入する方法

JS ノードの編集方法 Java Script
スポンサーリンク

今回は、「ノード」を追加したり、削除したりするメソッドをご紹介させて頂きます。

それぞれがどのように動作するのかを理解するのは難しくはないのですが、とても沢山のメソッドがあるので、混乱してしまう場合があります。

一つ一つご自身でコードを書きながら学習を進めるようにしてください。

スポンサーリンク

create*

createElement

document.createElement(tag)」でタグの新しい要素を作成します。

let div = document.createElement('div');

createTextNode

document.createTextNode(text)」で新しいテキストノードを作成します。

let textNode = document.createTextNode('Hello World');

createAttribute

document.createAttribute()」で属性ノードを作成します。

let cAttribute = document.createAttribute('id');
cAttribute.value = 'attri';

属性値:id、属性名:attri を作成します。

ノードを子ノードに追加する

prepend

prepend」メソッドは、新しいノードを子ノードの先頭に追加します。

HTML

      <h2>動物</h2>
      <ul id="animals">
        <li id="dog">犬</li>
        <li id="cat">猫</li>
        <li id="bird">鳥</li>
        <li id="panda">パンダ</li>
      </ul>
let firstLi = document.createElement("li");
firstLi.prepend("馬");

animals.prepend(firstLi);
  • パンダ

append

append」メソッドは、新しいノードを子ノードの最後尾に追加します。

let lastLi = document.createElement("li");
lastLi.append("馬");

animals.append(lastLi);
  • パンダ

appendChild

appendChild」メソッドは、新しいノードを子ノードの最後尾に追加します。

let lastLi = document.createElement("li");
lastLi.innerHTML = "馬";

animals.appendChild(lastLi);
  • パンダ

「append」と「appendChild」は基本的に同じ動作をします。

これらの違いは、「append」はjQueryのメソッドで、「appendChild」はJavaScriptのメソッドであるということです。

どちらを使うかは環境によりますが、「append」の方がより簡単にコードを書くことが出来ます。

before

before」メソッドは、指定した子ノードの前に、新しいノードを挿入します。

let deer = document.createElement("li");
deer.append("鹿");

let deerList = document.getElementById("cat");
deerList.before(deer);
  • 鹿
  • パンダ

insertBefore

insertBefore」メソッドは、指定した子ノードの前に新しいノードを挿入します。

let deer = document.createElement("li");
deer.append("鹿");

let parentUl = document.getElementById("animals");
let deerList = document.getElementById("cat");
parentUl.insertBefore(deer, deerList);

after

after」メソッドは、指定した子ノードの後に新しいノードを挿入します。

let deer = document.createElement("li");
deer.append("鹿");

let deerList = document.getElementById("cat");
deerList.after(deer);
  • 鹿
  • パンダ

「鹿」の位置を確認してください。

ノードの置き換え

replaceWith

replaceWith」メソッドは、既存のノードを新しいノードに置き換えます。

let deer = document.createElement("li");
deer.append("鹿");

let deerList = document.getElementById("cat");
deerList.replaceWith(deer);
  • 鹿
  • パンダ

「猫」が「鹿」に変わっています。

replaceChild

relaceChild」メソッドは、既存のノードを新しいノードに置き換えます。

let deer = document.createElement("li");
deer.append("鹿");

let parentUl = document.getElementById("animals");
let deerList = document.getElementById("cat");
parentUl.replaceChild(deer, deerList);

ノードを削除する

remove

remove」メソッドは、ノードを削除します。

let element2 = document.getElementById("animals");
element2.lastElementChild.remove();

最後の「パンダ」が消えています。

removeChild

removeChild」メソッドは、ノードを削除します。

let element2 = document.getElementById("animals");
element2.removeChild(element2.lastElementChild);

最後のパンダが消えています。

ノードを削除する2つのメソッドがありますが、基本的には、「remove」メソッドを使うようにしましょう。

ノードを指定した場所に挿入する

insertAdjacentHTML

insertAdjacentHTML」メソッドは、指定した場所にHTML文のノードを挿入します。

読み方は「インサートアジェイスントゥHTML」になります。

(カタカナで書くとちょっと微妙な感じなので、辞書等で発音を確認しておいてください。)

element.insertAdjacentHTML(position, html)」の形で書く必要があります。

positionに取れる値は以下の4種類になります。

  • beforebigin:要素の前にHTMLを挿入
  • afterbigin:子要素の先頭にHTMLを挿入
  • beforeend:子要素の最後にHTMLを挿入
  • afterend:要素の後にHTMLを挿入
let element2 = document.getElementById("animals");

element2.insertAdjacentHTML("beforebegin", "<p>動物の紹介です</p>");
element2.insertAdjacentHTML("afterend", "<p>ありがとうございました</p>");
element2.insertAdjacentHTML("afterbegin", "<li>馬</li>");
element2.insertAdjacentHTML("beforeend", "<li>鹿</li>");

動物の紹介です

  • パンダ
  • 鹿

ありがとうございました

それぞれどこに挿入されたか確認しておいてください。

「insertAdjacent」を伴うメソッドは他にも、2つあります。

insertAdjacentText:テキストを挿入
insertAdjacentElement:要素を挿入

しかしこれらはほとんど使われることはありませんので、覚えておく必要はないと思います。

ノードをクローンする

cloneNode

cloneNode」はノードのクローンを作成します。

let clone = element2.cloneNode(true);

element2.after(clone);
  • パンダ
  • 鹿
  • パンダ
  • 鹿

ここでは「true」を呼び出していますが、「false」にすると、子要素のないクローンが作成されます。

スポンサーリンク

あとがき

とても沢山のメソッドをご紹介させて頂きました。

これらをすべて覚えるのは不可能なので、実際に作業する時に覚えていくようにしましょう。

とりあえずは、それぞれのメソッドを見たら、何をするのかが分かるようになっていれば良いと思います。

今回も最後までお読み頂きありがとうございました。

タイトルとURLをコピーしました