转行学开发,代码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操作元素(创建、删除)的更多相关文章

  1. javascript 操作元素属性的方法

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Javascript操作元素属性方法总结

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. javascript操作元素的css样式

    我们经常要使用Javascript来改变页面元素的样式.当中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们一般是通过处理HTML Dom的classname特性 ...

  4. DOM增删操作(创建删除表格)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  5. document--文档中的操作,操作属性、操作样式、操作元素

    ---恢复内容开始--- document操作:    1.找元素   getE..    2.操作内容   非表单:innerHtml   表单:value    3.操作属性            ...

  6. 使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)

    getElementById(id)这是通过id来访问某一元素,最常用的之一,例:<html><body><div id="myid">test ...

  7. 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)

    DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type       使用options[index]返回具体选项所对应的常用属性:defa ...

  8. 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.数组插入.删除 ...

  9. DOM操作(二)对元素的操作(创建,追加,删除)

    1 创建新的 HTML 元素 (节点) var divDom=document.createElement('div'); 2 添加新元素到尾部 element.appendChild(para); ...

随机推荐

  1. 编码规范(code style guide)

    1. Javascript Google: https://google.github.io/styleguide/jsguide.html Airbnb:https://github.com/air ...

  2. 设置国内AndriodSDK代理

    由于一些原因,Google相关很多服务都无法访问,所以在很多时候我们SDK也无法升级,当然通过技术手段肯定可以解决,但是比较麻烦,而且下载速度也不怎么样. 这里笔者介绍一个国内的Android镜像站, ...

  3. Poj 3268 Silver cow party 迪杰斯特拉+反向矩阵

    Silver cow party 迪杰斯特拉+反向 题意 有n个农场,编号1到n,每个农场都有一头牛.他们想要举行一个party,其他牛到要一个定好的农场中去.每个农场之间有路相连,但是这个路是单向的 ...

  4. [CQOI2009]dance跳舞(最大流+二分)

    [CQOI2009]dance跳舞 每个人拆成$2$个点,表示是否与喜欢的人跳舞 跳$m$首舞曲时,满足最大流为$n*m$ 二分$m$,跑最大流即可 #include<cstdio> #i ...

  5. asp.net 获取表单中控件的值

    原文:https://blog.csdn.net/happymagic/article/details/8480235   C# 后台获取前台 input 文本框值.(都是以控件的Name来获取) s ...

  6. Python基础入门一文通 | Python2 与Python3及VSCode下载和安装、PyCharm激活与安装、Python在线IDE、Python视频教程

    目录 1. 关键词 2. 推荐阅读 2.1. 视频教程 3. 本文按 4. 安装 4.1. 视频教程 4.2. 资源下载 4.3. 安装教程 1. 关键词 Python2 与Python3及VSCod ...

  7. TensorFlow 安装及使用

    安装 (1)安装包安装:pip install tensorflow==1.14 -i https://pypi.douban.com/simple virtualenv -p /usr/bin/py ...

  8. ltp-ddt eth_parallel_processing

    ETH_S_FUNC_PARALLEL_PROCESSING: source 'common.sh'; prepare_nfs_mount.sh "/mnt/nfs_mount"| ...

  9. css3 动画实例

    animation 动画 animation-duration 代码实例: <!DOCTYPE html> <html> <head> <meta chars ...

  10. dsu on tree 学习笔记

    这是一个黑科技,考虑树链剖分后,每个点只会在轻重链之间转化\(log\)次. 考虑暴力是怎么写的,每次枚举一个点,再暴力把子树全部扫一边. \(dsu\ on\ tree.\)的思想就是保留重儿子不清 ...