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); ...
随机推荐
- 无法打开内核设备"\\.\Global\vmx86":系统找不到指定的文件. 是否在安装 VMwareWorksation 后重新引到 ? 问题解决
节前正常使用的工作环境, 过完春节后, 上班第一天就不正常工作了, 难不成机器也要放假休息, 虚拟机打不开了, 没办法办公可是不行的. 上网查原因, 解决问题. 上网看了很多关于此问题的解决办法, 很 ...
- 数组方法之reduce实践
Array.prototype.reduce let arr = [1, 2, 3, 4], sum = arr.reduce((prev, curr, index, arr) => { ret ...
- nginx 499错误
原因: 服务响应时间太长,客户端自动断开链接. 解决: 1. 找到响应世间长的接口,看依赖的数据源(数据库,第三方接口等)响应时间是否超时,还是自己程序有逻辑问题. 可以通过加入日志打印时间消耗来确定 ...
- .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)(转)
自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add.Delete.CreateO ...
- ajax图片上传(asp.net +jquery+ashx)
一.建立Default.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=&q ...
- 07.SUSE Linux 系统本地yum源配置
SUSE Linux 系统 1.新建本地源存储目录root@suse:mkdir /mnt/SUSE_LOCAL_SOURCE 2.创建zypper本地源root@suse:zypper ar fil ...
- ForkJoinPool源码简单解析
ForkJoin框架之ForkJoinTask java 阅读约 62 分钟 前言 在前面的文章"CompletableFuture和响应式编程"中提到了ForkJoinTas ...
- [python 学习] sax
#!/usr/bin/python # -*- coding: UTF-8 -*- import xml.sax class MovieHandler( xml.sax.ContentHandler ...
- CF1090J Two Prefixes
神仙题++ 还是在某校梁大讲的题qaq 我们考虑容斥 也就是本质不同字串=全部-重复的 我们只需要求重复的即可 考虑相同的s=ab 我们用长度最长的a作为代表串 如果存在一个a'b'且|a'|> ...
- Zabbix分布式监控系统实践 自定义配置
https://www.zabbix.com/wiki/templates/start 环境介绍OS: Ubuntu 10.10 Server 64-bitServers:zabbix-server: ...