0
点赞
收藏
分享

微信扫一扫

删除节点

删除现有节点的语法为:

父节点.removeChild(子节点);

节点不能“自杀”,要删除一个节点,必须通过调用它的父节点的 removeChild()方法来删除它。比如 oBox

要删除自己的第 1 个子节点:

oBox.removeChild(oBox.childNodes[0]);

看一个案例演示,HTML 结构如下:

<ul id="list">

<li>北京 <button>删除</button></li>

<li>上海 <button>删除</button></li>

<li>广州 <button>删除</button></li>

</ul>

程序中放置了一个 ul 列表,列表中有一些列表项,每个列表项内都有一个按钮。

请实现效果:单击删除按钮,删除它所在的 li 标签。

JavaScript 代码如下:

<script type="text/javascript">

var oUl = document.getElementById("list");

var oButtons = oUl.getElementsByTagName("button");

//给所有按钮添加监听

for(var i = 0 ; i < oButtons.length ; i++){

oButtons[i].onclick = function(){

//让 oUl 节点删除点击的这个按钮的父节点

oUl.removeChild(this.parentNode);

}

}

</script>

在事件处理函数中 this 表示触发事件的元素,即“给谁添加监听,this 就是谁”。由于监听是给 button

按钮添加的,所以事件处理函数中的 this 是指用户点击的 button 按钮,进而 this.parentNode 就是用户点

击的这个按钮的父元素 li 标签。

节点不能“自杀”,要想删除 li 标签,必须使用 li 标签的父元素 oUl 来删除它。这就是这行代码的意义:

oUl.removeChild(this.parentNode)

 移动节点

appendChild()方法也可以用来移动节点。当一个现有节点被重新追加到另一个父节点中时,此时这个节

点将被移动位置。例如:

<!DOCTYPE html>

<head>

<meta charset=UTF-8>

<title>Document</title>

</head>

<body>

<div id="box1">

<p id="para"></p>

</div>

<div id="box2"></div>

<script type="text/javascript">

var box1 = document.getElementById("box1");

var box2 = document.getElementById("box2");

var para = document.getElementById("para");

box2.appendChild(para);

</script>

</body>

</html>

本来 p#para 节点是 box1 的子节点,但 JavaScript 程序让它重新被追加到了 box2 盒子上,此时它将被

移动位置。节点被重复 appendChild()会被移动位置的原理很简单:任何一个节点在 DOM 节点树上只能有一个

位置,不能同时拥有两个位置。

打开浏览审查元素功能的“Elements”面板,发现 para 标签已经被移动到 box2 内部了


举报

相关推荐

0 条评论