一提到appendChild ,我们就知道是在父节点上增加子节点。

经常使用到它就是动态增加一个元素,将其加入到指定的父节点下。

其实appendChild除了这个功能之外,他还有一个功能:如果子节点不是动态创建的元素,而是在某个元素下的子元素,那么他还会自动执行一次removeChild功能。

举个栗子:将ul1下的li移动到ul2下:

html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>appendChild自带removeChild功能</title>
<style type="text/css">
#ul1{
background: red;
}
#ul2{
background: greenyellow;
}
</style>
</head>
<body>
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<button id="btn1">移动</button>
<ul id="ul2"></ul>
</body>
</html>

正常思路下的javascript:

<script type="text/javascript">
var ul1 = document.getElementById("ul1");
var ul2 = document.getElementById("ul2");
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
//获取ul1下所有li
olis = ul1.getElementsByTagName("li");
if(olis.length>0){
//获取ul1下的第一个li
var oLi = ul1.children[0];
//删除ul1下面的第一个li
ul1.removeChild(oLi);
//给ul2下面增加ul1下的第一个Li
ul2.appendChild(oLi);
}
}
</script>

去掉removeChild下的javascript:

<script type="text/javascript">
var ul1 = document.getElementById("ul1");
var ul2 = document.getElementById("ul2");
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
//获取ul1下所有li
olis = ul1.getElementsByTagName("li");
if(olis.length>0){
//获取ul1下的第一个li
var oLi = ul1.children[0];
//删除ul1下面的第一个li
//ul1.removeChild(oLi);
//给ul2下面增加ul1下的第一个Li
ul2.appendChild(oLi);
}
}
</script>

其实有没有removeChild ul1下的li效果都是一样的,因为appendChild()会先remove子元素之前位置父元素下的该元素,然后再新的父元素上添加该子元素。

js appendChild 自带remove和append两个功能的更多相关文章

  1. 【转】JS大总结(带实例)

    JS大总结(带实例) JavaScript事务查询综合click() 对象.click() 使对象被点击.closed 对象.closed 对象窗口是否已封闭true/falseclearTimeou ...

  2. css文件和js文件后面带一个问号

    经常看一些网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,这是干什么用的? 这个方法我也用过,而且很好用?,它的作用有两个:1.作为版本号,让自己方便记忆.查找:2.作 ...

  3. css文件和js文件后面带一个问号----2015-1103

    经常看一些网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,这是干什么用的? 这个方法我也用过,而且很好用?,它的作用有两个:1.作为版本号,让自己方便记忆.查找:2.作 ...

  4. js+css实现带缓冲效果右键弹出菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. js 图片base64转file文件的两种方式

    js 图片base64转file文件的两种方式 https://blog.csdn.net/yin13037173186/article/details/83302628 //将base64转换为bl ...

  6. js setTimeout 传递带参数的函数的2种方式

      js setTimeout 传递带参数的函数的2种方式 Created by Marydon on 2018年9月14日 1.准备工作 function sayYourName(param) { ...

  7. js课程 2-7 带默认参数的函数怎么写

    js课程 2-7 带默认参数的函数怎么写(注意参数顺序) 一.总结 一句话总结:默认参数一定要放在最后面,而且还有注意你调用参数的时候给参数的顺序习惯.直接加个等于号就可以是默认参数.function ...

  8. oldboy s21day12.设计商城系统,主要提供两个功能:商品管理、会员管理。

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.写出三元运算的基本格式及作用?'''a if a>b else b''' # 2.什么是匿名函数? ...

  9. JS控制文本框中的密码显示/隐藏功能

    <html> <head> <title>[荐]JS控制文本框中的密码显示/隐藏功能_网页代码站(www.6a8a.com)</title> <s ...

随机推荐

  1. [luoguP1131] [ZJOI2007]时态同步(贪心)

    传送门 显然是一棵树. 又显然一段一段地增加比较优. 我们可以dfs,并且尽量把每一个节点所有子树中所有节点的时间增加到一样. #include <vector> #include < ...

  2. 【2018.9.26】K-D Tree详解

    网上对K-D-Tree的讲解不尽清晰,我学了很久都不会写,这里新开一文做一些讲解. 1.K-D-Tree是什么? K-DTree 即 K-Dimensional-Tree,常用来作空间划分及近邻搜索, ...

  3. Nk 1430 Divisors(因子数与质因数)

    Time Limit: 5000 ms    Memory Limit: 10000 kB   Total Submit : 432 (78 users)   Accepted Submit : 10 ...

  4. 【转】UITableViewCell自适应高度 UILabel自适应高度和自动换行

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {     ...

  5. compose.yml模板文件

    默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式. 示例: version: " services: webapp: image: examples/web ...

  6. android apk程序升级

    1 .设置apk版本号 Androidmanifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/ ...

  7. BZOJ——2096: [Poi2010]Pilots

    http://www.lydsy.com/JudgeOnline/problem.php?id=2096 Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: ...

  8. Chrome常用URL命令(伪URL)

    在Chrome地址栏输入chrome://chrome-urls/可以看到所有的Chrome支持的伪RUL 1.chrome://accessibility/ 可达性分析,默认是关闭的,点击acces ...

  9. activiti实现的请假流程

    直接上图,还是有点复杂的

  10. 使用图片作为textview组件的背景

    <TextView android:layout_gravity="center" android:layout_width="100dp" androi ...