访问text节点的文本内容,可以通过nodeValue或者data属性 。
下面简单说说它提供的一些方法
appendData(); // 在text末尾加内容 deleteData(offset, count); // 从offset指定的位置开始删除count个字符 还有insertDate、replaceData、splitText等方法,就不一一说了,用的机会很少,可以用的时候再查阅 。
然后它还有一个lenght属性,返回字符长度的 。
这里说一个常见的坑 。比如下面这个html结构
这里,ul的第一个子节点(firstChild)是什么呢?第一眼看过去,肯定认为是li了,但是实际上,你会发现不是li,而是一个文本节点!
这是因为浏览器认为ul和第一个li之间有空白字符,所以就有文本节点了 。
这里一个常见的问题就是遍历ul的childNodes的时候,遍历的元素一定要判断下nodeType是不是等于1(等于1就代表是元素节点),这样才能跳过这个坑 。否则你也可以删除所有的空格和换行符 。
创建文本节点的方法是document.createTextNode
然后接下来和操作Element类型一样,就是再插入到元素中,浏览器就可以看到了 。
六、其他的一些类型 Comment、DocumentType和DocumentFragment
这些不常用的一句话带过把
Comment是注释节点
DocumentType就是doctype节点,通过docment.doctype来访问
DocumentFragment这个节点是一个文档片段,偶尔会用到 。
比如一种常见的用法是,在一个ul中插入3个li 。
如果你循环插入3次,那么浏览器就要渲染3次,对性能有蛮大的影响 。
所以大家一般这么做
先
var fragment = document.createDocumentFragment(); 然后循环把li,用appendChild插入到fragment里面
最后在一次把fragment插入到ul里面 。这样就会很快 。
七、DOM扩展
进过上面讲的这么多节点类型,想必大家对DOM节点已经有了很深的了解,下面讲一讲DOM扩展的一些东西 。
浏览器为了方便开发者,扩展了一些DOM功能 。
因为是浏览器自己扩展的,所以使用前兼容性问题一定要注意
判断“标准模式”和“混杂模式”通过 document.compatMode和新的document.documentMode
上面不是说了一个文本节点作为第一子元素的坑吗,所以浏览器又实现了一个children属性,这个属性只包含元素节点 。
为了方便判断A节点是不是B节点的子节点,引入了contains方法,比如
B.contains(A); // true就代表是,false就代表不是 这个方法有兼容性问题,使用前可以谷歌解决方法 。
针对访问元素,又提供了4个方法
innerText/innerHTML/outerTEXT/outerHTML 。
通过这些方法,可以读和写元素 。
其中,*TEXT是返回文本内容 *HTML是返回html文本 。
而outer*则是代表是否包含元素本身 。
实际使用来看,在读内容的时候 inner和outer没有区别 。
在把内容写入元素的时候,就是是否包含元素本身的区别 。
重要的是,这几个方法有性能问题,比如在IE中,通过inner删除的节点,其绑定的事件依然在内存中,就很容易消耗大量内存 。*
还有一个技巧是,插入大量的html代码,用innerHTML是非常快的,建议使用 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 蜂王浆是什么
- 十种方法增强记忆力是什么呢
- 绝对值最小的有理数 绝对值最小的有理数是什么数
- 一蹴而就的意思是什么 一蹴而就的意思是什么啊
- 连长是什么军衔 一个连的编制是多少人
- 儒家思想的核心主张是什么 儒家及其代表性人物
- smt是什么意思和流水线哪个轻松 smt贴片元器件是什么意思
- 大雁往南飞是什么季节
- 馍馍上点的红色是什么
- 生源地是什么意思?生源地一般写到县还是市