JS中的对DOM的逻辑结构,即元素节点的存在,和元素节点的布局是分离的;
元素都存在document这个大的结构内,
但是布局的话根据实际情况去布局;
也就是说,创建节点需要分两步执行,
1、先在document里面创建一个节点,
2、再对节点进行布局;
1 <body>
2 <div id="wrap">
3 <p></p>
4 <span>111</span>
5 <span class="txt"></span>
6 </div>
7
8 <script>
9 var oWrap = document.getElementById("wrap"),
10 op = document.createElement("p");
11 op.innerHTML = "这是一个新添加的P标签";
12 op.onclick = function () {
13 alert("op");
14 };
15 oWrap.appendChild(op); //在oWrap的所有子节点的最后添加op,
16 // 这也可以看出,JS中的对DOM的逻辑结构,即元素节点的存在,和元素节点的布局是分离的;元素都存在document这个大的结构内,但是布局的话根据实际情况去布局;比如这里创建的P元素节点先存在于document之下,再通过appendchild布局到oWrap之下;
17 var newSpan = document.createElement("div"),
18 oldSpan = document.getElementsByClassName("txt");
19 newSpan.innerHTML = "这是新添加的span标签";
20 newSpan.onclick = function () {
21 alert("ospan");
22 };
23 oWrap.insertBefore(newSpan,oldSpan[0]); //
24 console.log(oWrap.children); //输出 0:p,1:div,2:span.txt,3:p;的伪数组,可以证明oWrap.children是动态获取的;
25 oWrap.replaceChild(op,oWrap.children[2]); //用op替换了 ===》oWrap的第二个子元素节点,也可以替换所有子节点,只不过这里的children是获取子元素节点的API;
26 oWrap.appendChild(oWrap.children[1].cloneNode(true)); // .cloneNode()克隆的API,默认参数(空值)为false,只克隆元素,不克隆元素里面的内容,参数为true,为深度克隆,克隆元素里面的内容。
27 //console.log(oWrap.children); //
28
29 </script>
30 </body>