day35—JavaScript操作元素(创建、删除)
转行学开发,代码100天——2018-04-20
JavaScript对DOM元素的创建、删除操作。
1.创建DOM元素
appendChild方法
- createElement(ochild);
- oparent.appendChild(ochild)
insertBefore方法
- createElement(ochild);
- insertBefore(ochild,opos);
如通过按钮操作,创建元素
<input id = "txt" type="text" name="text">
<input id ="Abtn" type="button" value="向前添加" name="添加">
<input id ="Bbtn" type="button" value="向后添加" name="添加">
<ul id="ull"></ul>

<script type="text/javascript">
window.onload = function () {
var oBtn0 = document.getElementById("Abtn");
var oBtn1 = document.getElementById("Bbtn");
var oUl = document.getElementById("ull");
var oTxt = document.getElementById("txt");
// var oLi = document.createElement('li');
//向前插入
oBtn0.onclick = function(){
if (oTxt.value=="") {
alert("请填写添加内容");
}else
{
var oLi = document.createElement('li');
oLi.innerHTML = oTxt.value;
var aLi = oUl.getElementsByTagName('li');
if (aLi.length>0) {
oUl.insertBefore(oLi,aLi[0])
}else
oUl.appendChild(oLi);
}
}; //向后插入 oBtn1.onclick =function(){
if (oTxt.value=="") {
alert("请填写添加内容");
}else
{
var oLi = document.createElement('li');
oLi.innerHTML = oTxt.value;
//父节点.append(子节点)
oUl.appendChild(oLi);
}
};
};
</script>
通过上述代码实现li元素及其内容的添加。
但是,由于浏览器兼容性问题,在向前插入的代码段中对li个数进行了判断
//向前插入
oBtn0.onclick = function(){
if (oTxt.value=="") {
alert("请填写添加内容");
}else
{
var oLi = document.createElement('li');
oLi.innerHTML = oTxt.value;
var aLi = oUl.getElementsByTagName('li');
if (aLi.length>0) {
oUl.insertBefore(oLi,aLi[0])
}else
oUl.appendChild(oLi);
}
};
2.元素的删除
父级.removeChild(子节点); //彻底删除元素
如:
<div id="container">
<ul id="ul">
<li>asjhasf<a href="javascript:;">删除</a></li>
<li>432sdf<a href="javascript:;">删除</a></li>
<li>asj23fsfhasf<a href="javascript:;">删除</a></li>
<li>23tvasjhasf<a href="javascript:;">删除</a></li>
</ul>
</div>

通过选择“删除”即将当前行内容删除
JavaScript实现中,首先获取ul父级节点,即当前a标签。利用removeChild方法删除
//删除元素功能
var oull = document.getElementById("ul");
var oa = oull.getElementsByTagName("a");
for (var i = 0; i < oa.length; i++) {
oa[i].onclick = function()
{
oull.removeChild(this.parentNode);
}
}
3.文档碎片:DocumentFragment
一个很形象的比喻,即文档碎片相当于生活中的购物袋。当我们购买的物品较多时,往往通过购物袋打包拎回家。当然,物品较少时直接拎回去得了。
于此类似,当我们需要插入很多元素时,先将插入的元素装入文档碎片中,最后将该文档碎片添加到父节点即可。
(果真,计算机世界是对现实生活的模拟啊)
//文档碎片
var aul = document.getElementById("oul");
var oFrag = document.createDocumentFragment();
for (var i = 0; i < 1000 ; i++) {
var oli = document.createElement("li");
oFrag.appendChild(oli);
}
aul.appendChild(oFrag);
文档碎片的使用对网页性能影响不大,已较少使用。
day35—JavaScript操作元素(创建、删除)的更多相关文章
- javascript 操作元素属性的方法
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Javascript操作元素属性方法总结
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- javascript操作元素的css样式
我们经常要使用Javascript来改变页面元素的样式.当中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们一般是通过处理HTML Dom的classname特性 ...
- DOM增删操作(创建删除表格)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- document--文档中的操作,操作属性、操作样式、操作元素
---恢复内容开始--- document操作: 1.找元素 getE.. 2.操作内容 非表单:innerHtml 表单:value 3.操作属性 ...
- 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)
getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...
- 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)
DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type 使用options[index]返回具体选项所对应的常用属性:defa ...
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...
- DOM操作(二)对元素的操作(创建,追加,删除)
1 创建新的 HTML 元素 (节点) var divDom=document.createElement('div'); 2 添加新元素到尾部 element.appendChild(para); ...
随机推荐
- .NET MVC Json()处理大数据异常解决方法
[1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ...
- [Markdown] 03 进阶语法 第一弹
目录 1. YMAL 题头 2. 缩写 3. 强调 4. 自定义 <div> 标签 5. <cite> 标签 5. <code> 与 <br> 标签 6 ...
- 利用Redisson实现分布式锁及其底层原理解析
Redis介绍 参考地址:https://blog.csdn.net/turbo_zone/article/details/83422215 redis是一个key-value存储系统.和Memcac ...
- [2019杭电多校第七场][hdu6646]A + B = C(hash)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6646 题意为求a*10x+b*10y=c*10z满足公式的任意一组解x,y,z. 因为c有可能会由a+ ...
- 洛谷 P1525 关押罪犯 & [NOIP2010提高组](贪心,种类并查集)
传送门 解题思路 很显然,为了让最大值最小,肯定就是从大到小枚举,让他们分在两个监狱中,第一个不符合的就是答案. 怎样判断是否在一个监狱中呢? 很显然,就是用种类并查集. 种类并查集的讲解——团伙(很 ...
- 使用Webpack的代码分离实现Vue懒加载(译文)
当一个Vue的项目体积变得十分庞大的时候,使用Webpack的代码分离功能将Vue Components,routes或Vuex的代码进行分离并按需加载,会极大的提高App的首屏加载速度. 在Vue的 ...
- 了解Greenplum (2)
一.目的 1. 理解Greenplum中的数据分布策略(random 和 distribution),分析不同分布策略的优劣:2. 理解查询执行中的数据广播和数据重分布,分析在何种情况下选择哪种策略, ...
- linux系统安装telnet服务
linux安装telnet 安装前准备工作 1.安装telnet服务需要三个软件包:telnet.telnet-server和xinetd包. telnet,telnet-sever,xinetd软件 ...
- Kubernetes部署DNS
前言 阅读地址 http://thoreauz.com/2017/04/16/docker/Kubernetes%E9%83%A8%E7%BD%B2DNS%E5%92%8CDashboard/ Kub ...
- Redis 复制功能详解
Redis 复制功能的几个重要方面: 1. 一个Master可以有多个Slave:2. Redis使用异步复制.从2.8版本开始,Slave会周期性(每秒一次)发起一个Ack确认复制流(replica ...