【JS】DOM ~ 基本編 / オブジェクト操作 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2011/01/07/012520

の続き。
「3)オブジェクト操作系」を掘り下げる

目次

【1】appendChild()
【2】removeChild()
【3】replaceChild()
【4】cloneNode()

【1】appendChild()

* 要素を追加する
* element1.appendChild(element2)は、
 「要素element1に要素element2を子要素として追加」。

[イメージ]

element1
 |
 +-- element2

1)サンプル

<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
function sample()
{
    var element = document.getElementById('here');
    var textNodeObj = document.createTextNode("でしょ?");
    element.appendChild(textNodeObj);
}
</script>
</head>
<body>
<button onclick="sample()">ボタン押下で「あっちに表示→」に「でしょ?」が追加</button>
<div id="here">あっちに表示→</div>
</body>
</html>

参考文献
http://jibun.atmarkit.co.jp/lskill01/rensai/dom06/dom01.html

【2】removeChild()

* 要素の削除

サンプル

<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
function sample()
{
    var divId2Obj = document.getElementById('id2');
    divId2Obj.parentNode.removeChild(divId2Obj);
}
</script>
</head>
<body>
<button onclick="sample()">ボタン押下で「ここが消える」が消える</button>
<div id="parent">
  <div id="id1">↓これが消える</div>
  <div id="id2">ここが消える</div>
</div>
</body>
</html>

参考文献
http://jibun.atmarkit.co.jp/lskill01/rensai/dom07/dom01.html

【3】replaceChild()

 * 要素を置き換える

1)サンプル

<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
function sample()
{
    var divId2Obj = document.getElementById('id2');
    var newTextareaObj = document.createElement('textarea');
    newTextareaObj.value = "ほらね!";
    newTextareaObj.rows = "5";
    newTextareaObj.cols = "20";
    newTextareaObj.style.backgroundColor = 'red';

    divId2Obj.parentNode.replaceChild(newTextareaObj, divId2Obj);
}
</script>
</head>
<body>
<button onclick="sample()">ボタン押下で「ここ」がTextAreaに代わります</button>
<div id="parent">
  <div id="id1">↓これが赤いTextAreaに代わります</div>
  <div id="id2">ここ</div>
</div>
</body>
</html>

【4】cloneNode()

* 要素を複製する

サンプル

<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
var count = 0;
function sample()
{
    var divId0Obj = document.getElementById('id0');
    var newDivbj = divId0Obj.cloneNode(true);
    var divParentObj = document.getElementById('parent');
    divParentObj.appendChild(newDivbj);
}
</script>
</head>
<body>
<button onclick="sample()">ボタン押下すればするほど、「同じ要素が表示」が現れる</button>
<div id="id0">同じ要素が表示</div>
<div id="parent">
</div>
</body>
</html>

【5】insertBefore()

* 要素を指定したい要素の子要素として挿入

1)サンプル

<html>
<head>
<title>サンプル</title>
<script type="text/javascript">
function sample()
{
    var bodyObj = document.getElementsByTagName('body').item(0);
    var divId2Obj = document.getElementById('id3');
    
    var newDivObj = document.createElement('div');
    newDivObj.id = 'id2';
    var textForNewDivObj = document.createTextNode('便利ですね')
    newDivObj.appendChild(textForNewDivObj);
    
    bodyObj.insertBefore(newDivObj, divId2Obj);
}
</script>
</head>
<body>
<button onclick="sample()">ボタン押下で「↓」と「↑」の間に「便利ですね」が表示</button>
<div id="id1">↓ここに表示</div>
<div id="id3">↑ここに表示</div>
</body>
</html>

関連記事

DOM ~ document.getElementById() ~
https://dk521123.hatenablog.com/entry/2011/12/29/200502
JavaScript覚書
https://dk521123.hatenablog.com/entry/2010/01/15/191626