JavaScript中操作有些DOM时关于文本节点和元素节点的问题。
初学JavaScript时候,经常遇到需要操作的内容因为文本节点而使操作更麻烦或者不能达到效果。
例:
<ul id="ull">
<li>111</li>
<li>222</li>
<li>333</li>
</ul>
<script>
//insertBofore
var oul = document.getElementById("ull");
var newli= document.createElement("li");
oul.insertBefore(newli,oul.lastChild);//lastelementChild
alert(oul.childNodes.length);
alert(oul.children.length);
在前面一段简单的代码示例中,假如需要在ul最后添加一个li可以用到inserBefore,但是,我们在获取ul下面最后一个节点的时候,这时候如果用oul.lastChild,则会出现将li添加到最末尾的情况,这是因为lastChild在使用的时候将最后一个文本节点也计算在里面,所以页面效果也是把li添加到li的末尾,当然也可以用相关条件进行控制。而我们用lastElmentChild的时候,是将li添加到ul下面最后一个li前面,就可以避免在计算的时候将文本节点计算在内,从而避免很多不必要的操作。
同理还有一些属性/方法也和lastChild具有相同的特点。
例如:
childNodes--指向所有子节点列表(包括文本节点)
previousSibling--指向前一个兄弟节点,如果该节点为第一个兄弟节点,则返回null(包括文本节点)
hasChildNodes()--当childNodes有一个或者多个子节点时,返回真。(包括文本节点)
等...
JavaScript中操作有些DOM时关于文本节点和元素节点的问题。的更多相关文章
- javascript中0级DOM和2级DOM事件模型浅析
Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...
- javascript中0级DOM和2级DOM事件模型浅析 分类: C1_HTML/JS/JQUERY 2014-08-06 15:22 253人阅读 评论(0) 收藏
Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...
- JavaScript中操作节点
1.获取节点 1.1.用 getElement 方法获取 获取元素节点时,必须等到DOM树加载完成后才能获取.两种处理方式:(1)将JS写在文档最后:(2)将代码写入window.onload函数中: ...
- JavaScript封装函数:获取下一个/上一个兄弟元素节点
要求: 获得下一个/上一个兄弟元素节点,不包括文本节点等 解决IE兼容性问题 代码实现: 获得下一个兄弟元素节点: function getNextElement(element) { var el ...
- JavaScript中操作对象的属性
1.操作对象的属性 注意: 标签属性与DOM对象属性的相应关系: 绝大部分2者是同样的.如:imgobj.src属性相应<img src="" >中src属性,但也有例 ...
- JavaScript中操作数组的方法
JavaScript Array 对象 对数组操作的方法分为两种 一种是会改变原始数组的变异方法,还有一种是不会改变原始数组的非变异方法. 总结 巧记 Push() 尾部添加 pop() 尾部删除 U ...
- 理解JavaScript中BOM和DOM的关系
JavaScript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,IE和其他的浏览器风格迥异.对象是JavaScript最重要的API,包含 ...
- JavaScript 中this与Dom中的注意
对于下面这段代码: <script type='text/javascript'> function testThis() { console.log(this); } </scri ...
- javascript中常用的DOM事件
//常用事件 onclick 点击事件 onmousedown 鼠标按下 onmousemove 鼠标移动 onmouseup 鼠标抬起 onmouseover 鼠标放上 onmouseout 鼠标放 ...
随机推荐
- C# 委托、匿名方法、扩展方法
一.委托的使用: 详细委托和事件解释请看另一篇:http://www.cnblogs.com/Liyuting/p/6760706.html 二.匿名方法 三.扩展方法
- 【转载&&干货】Noip应试技巧
NOIP应试技巧 如何看待别人的经验? 我想大家都有台上的学长滔滔不绝,但是自己在台下漠不关心,或是老师考试前的叮嘱说完一会儿功夫就忘记了的经历吧.所以,有可能我接下来的所说的话,一到考场上就全部忘记 ...
- PHP · MySQL函数
连接名=mysql_connect("主机","用户名","密码"); 连接名=mysql_qconnect("主机", ...
- java基础之运算符与语句
一.运算符 1.算数运算符 运算符 名称 举例 + 加法 A等于10,B等于3 则A+B=13 - 减法 A等于10,B等于3 则A-B=7 * 乘法 A等于10,B等于3 则A*B=30 / 除法 ...
- HDU 1428
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Django基础必备三神装(HttpResponse、render,、redirect)
在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...
- 在php中怎么利用js把参数传递给弹窗
1.在php页面中经常用到把参数传递给弹窗页面,在弹窗页面中操作 2.两种方式,截图为一种 3.最常见的就是利用hideen隐藏域,点击按钮的时候把要传递的参数值传递给隐藏域,需要的时候在弹窗中获取. ...
- 小tip:巧用CSS3属性作为CSS hack——张鑫旭
一.开篇小问题 题目:实现类似下图的宽度自适应效果,IE9+,FireFox,Chrome,Opera等使用CSS3实现,IE6~8浏览器使用图片实现. 计时思考…… 二.思考中 ————- 假设这是 ...
- JQuer.HoverDir的基本使用方法
首先引入JQ和HoverDir库 HTML部分: <ul id="da-thumbs" class="da-thumbs"> <li> ...
- RxJava重温基础
RxJava是什么 a library for composing asynchronous and event-based programs using observable sequences f ...