JS DOM 编程复习笔记 -- insertBefore、insertAfter、append、prepend(七)

本文详细介绍了DOM的insertBefore(), append(), 和 prepend() 方法,通过实例演示了如何在DOM树中插入新元素,以及它们与appendChild()的区别。适合初学者巩固DOM基础。

今天我们来继续来复习DOM的一些插入方法,insertBefore()append()prepend()方法。前面我们只用到过一个appendChild()方法。我们一个个看语法和示例,包你看完就会。

insertBefore()

insertBefore()用来在指定的DOM节点前插入DOM元素。

语法:

parentNode.insertBefore(newNode, existingNode);

parentNodeexistingNode的父节点

existingNode为已经存在的节点

newNode为新插入的节点,插入到existingNode的前面

工具函数

上面原生方法,可能还需要父节点,我们可以进行简单的封装使用

function insertBefore(newNode, existingNode) {
  existingNode.parentNode.insertBefore(newNode, existingNode);
}

例子

<ul id="menu">
  <li>产品</li>   
  <li>服务</li>
  <li>联系我</li>
</ul>

<script>
let menu = document.getElementById('menu');
// 创建一个新的li节点
let li = document.createElement('li');
li.textContent = '首页';

// 在第一个元素之前插入它
menu.insertBefore(li, menu.firstElementChild);
</script>

insertAfter()

JS DOM并没有insertAfter()这样一个方法,不过我们可以使用insertBefore()进行自己封装

工具函数

function insertAfter(newNode, existingNode) {
  existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

existingNode的下一个兄弟节点作为参照元素,在其前面进行插入新节点

例子

<ul id="menu">
  <li>首页</li>   
  <li>服务</li>
  <li>联系我</li>
</ul>

<script>
let menu = document.getElementById('menu');
// 创建一个新的li节点
let li = document.createElement('li');
li.textContent = '产品';

// 在第一个元素之前插入它
menu.insertBefore(li, menu.firstElementChild.nextSibling);
</script>

append()

append()和我们之前用的appendChild()方法很相似,在一个父元素的最后插入元素

语法:

parentNode.append(...nodes);
parentNode.append(...DOMStrings);

append node节点 示例

<ul id="app">
  <li>JavaScript</li>
</ul>

<script>
let app = document.querySelector('#app');

let langs = ['TypeScript','HTML','CSS'];

let nodes = langs.map(lang => {
  let li = document.createElement('li');
  li.textContent = lang;
  return li;
});

app.append(...nodes);
</script>

最后页面的HTML将为

<ul id="app">
  <li>JavaScript</li>
  <li>TypeScript</li>
  <li>HTML</li>
  <li>CSS</li>
</ul>

append DOMStrings 示例

<div id="app"></div>

<script>
  let app = document.querySelector('#app');
  app.append('append() 文本 Demo');

  console.log(app.textContent);
  // 输出:
  // append() 文本 Demo
</script>

最后页面的HTML将为

<div id="app">append() 文本 Demo</div>

append vs appendChild()

下面表格展示了 append()appendChild()的区别:

Differencesappend()appendChild()
返回值undefined插入的 Node 对象
参数多个 Node 对象单个Node 对象
参数类型允许 Node 或者 DOMStringNode

prepend()

append()方法类似,prepend()用来在最前面插入元素

语法:

parentNode.prepend(...nodes);
parentNode.prepend(...DOMStrings);

prepend node节点

<ul id="app">
  <li>HTML</li>
</ul>

<script>
  let app = document.querySelector('#app');

  let langs = ['CSS','JavaScript','TypeScript'];

  let nodes = langs.map(lang => {
    let li = document.createElement('li');
    li.textContent = lang;
    return li;
  });

  app.prepend(...nodes);
</script>

输出HTML

<ul id="app">
  <li>CSS</li>
  <li>JavaScript</li>
  <li>TypeScript</li>
  <li>HTML</li>
</ul>

prepend() DOMStrings

<div id="app"></div>

<script>
  let app = document.querySelector('#app');
  app.prepend('prepend() 文本 Demo');

  console.log(app.textContent);
  // 输出:
  // prepend() 文本 Demo
</script>

最终的HTML为

<div id="app">prepend() 文本 Demo</div>

总结

今天我们复习了insertBefore()append()prepend()方法,掌握DOM基础插入方法,走遍天下都不怕。

明天见。

如果你想跟着我一起复习DOM知识,微信搜索【小帅的编程笔记】,每天更新

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值