当前位置 : 主页 > 网页制作 > html >

document动态操作元素

来源:互联网 收集:自由互联 发布时间:2021-06-12
(一)动态创建元素 1. 通过innerHTML创建元素 语法: 元素.innerHTML = ‘内容‘; 1 body 2 button add / button 3 ul 4 li 列表项 / li 5 / ul 6 script 7 // 更新ul中的内容,动态添加li 8 var btn = document.quer

(一)动态创建元素

1. 通过innerHTML创建元素

语法:元素.innerHTML = ‘内容‘;

 1 <body>
 2     <button>add</button>
 3     <ul>
 4         <li>列表项</li>
 5     </ul>
 6     <script>
 7     //更新ul中的内容,动态添加li
 8     var btn = document.querySelector(button);
 9     var ul = document.querySelector(ul);
10     btn.onclick = function() {
11         var old = ul.innerHTML; //原有的li
12         ul.innerHTML = old + <li>new list</li>;
13     }
14     </script>   
15 </body>

innerHTML适用于少量的拼接,因为字符串大量拼接时有性能问题。

 

2. 通过document.createElement创建元素

语法:document.createElement(‘标签名‘);  //返回一个新的元素对象

 1 <body>
 2     <button>add</button>
 3     <ul>
 4         <li>列表项</li>
 5     </ul>
 6     <script>
 7     //更新ul中的内容,动态添加li
 8     var btn = document.querySelector(button);
 9     var ul = document.querySelector(ul);
10     btn.onclick = function() {
11       var newChild = document.createElement(li); 
12       newChild.innerText = 新元素;  //设置内容,给谁设置谁就点
13       ul.appendChild(newChild);  //追加元素
14     };
15     </script>   
16 </body>

 

3. 两种方法比较

createElement不需要拼接,会自动追加到下一项。运行速度比innerHTML拼接要快。(推荐使用)

innerHTML大量拼接字符串时速度慢。

 

(二)动态追加元素

语法:父元素.appendChild(子元素);

函数封装注意:对于函数体中不能写死的地方用参数

 1 <button>创建li</button>
 2 <ul>
 3 <li>我是li</li>
 4 </ul>
 5 <script>
 6     var btn = document.querySelector(button);
 7     var ul = document.querySelector(ul);
 8     btn.onclick = function() {
 9       // 创建一个新的li元素
10       var newLi = document.createElement(li);
11       // 追加
12       ul.appendChild(newLi);
13       // 设置内容
14       newLi.innerText = 我是新来的li;
15     };
16 </script>

 

 

(三)删除元素

语法:父元素.removeChild(子元素); 

confirm(); 提示是否确认删除,返回布尔值。

 1 <ul>
 2 <li>我是li1</li>
 3 <li class="li2">我是li2</li>
 4 <li>我是li3</li>
 5 </ul>
 6 <script>
 7     var ul = document.querySelector(ul);
 8     var li2 = document.querySelector(.li2);
 9     // 移除第二li
10     ul.removeChild(li2);
11 </script>

 

 

(四)其他元素

1. 插入元素

语法:父节点.insertBefore(新的节点,旧的子节点)

2. 替换元素

语法:父节点.replaceChild(新的节点,旧的子节点)

3. 克隆元素

语法:元素.cloneNode(true或false); 返回一份新的克隆后的元素,默认值false

  • true,克隆该元素的所有内容
  • false,仅仅克隆外层标签
 1 <ul>
 2     <li>我是li1</li>
 3     <li>我是li2</li>
 4     <li>我是li3</li>
 5 </ul>
 6 <div>
 7     <h2>我是div中的标题</h2>
 8     <span>我是span</span>
 9     <button>按钮</button>
10     <p>段落</p>
11 </div>
12 
13 <script>
14     var ul = document.querySelector(ul);
15     var oldLi = ul.children[0];
16     // 创建一个新的li
17     var newLi = document.createElement(li);
18     newLi.innerText = 我是新的li;
19     // 【插入】
20     // ul.insertBefore(newLi,oldLi);
21     // 替换
22     // ul.replaceChild(newLi,oldLi);
23     // 【获取div】
24     var div = document.querySelector(div);
25     // 【克隆】
26     // var newDiv = div.cloneNode(); // 默认是false,表示仅仅克隆外层标签
27     var newDiv = div.cloneNode(true); // 若是true,会克隆该元素的所有内容
28     document.body.appendChild(newDiv);
29 </script>
网友评论