js有关元素内容操作小结


Posted in Javascript onDecember 20, 2011

1.innerHTML
这个大家一定都很熟悉,可读可写,修改元素内容相当快捷方便,在兼容问题上可以参考W3Help中一个知识记录。

2.outerHTML
此方法可以用于对元素自身的快速替换,比如:

<p id="hello">Hello, I am a demo</p> 
$('hello').outerHTML = '<p>Hello, I am a replacement</p>';

遗憾的是,firefox目前还不支持(我当前用firefox8),其他浏览器支持的还不错,在ff中可以用innerHTML来模拟实现。

3.documentFragment
DocumentFragment能实现高效率的DOM节点插入操作,我们可以新建一个DocumentFragment。

var docFragment = document.createDocumentFragment();

它支持元素节点的appendChild方法,可以利用它进行追加节点,相当于内存中的一个临时空间, 然后一次性加入DOM Tree中,较少浏览器相关的reflow和repaint事件,在之前的博文中有提到。

4.insertAdjacentHTML
这个方法很有意思,是IE4最先引入的,目前也写入了HTML5标准,目前所有浏览器都支持,ff是8才刚开始支持的。 它能够实现在元素的里外,共4个地方灵活的添加内容,例如:

<!-- beforebegin --><p id="test"><!-- afterbegin -->hello, I am a demo.<!-- beforeend--></p><!-- afterend--> 
$('test').insertAdjacentHTML('beforebegin', /* your content here */);

这确实很cool不是么,但遗憾的是,IE自己引入,确在IE6~8的版本中存在不少bug,比如我测试中遇到如果元素是div的话, 能够在四个地方,都能顺利插入内容,这是我们所预期的,但是我换成p元素的话,‘beforebegin'和‘afterend'就会报错, 它变得只支持p外部的内容插入,不允许插入到p的内部,还有tr,td不支持此方法等各种bug。IE9测下来,表现预期。 关于这个方法jQuery之父,有篇博客有讲,感兴趣的可以稍微参考下http://ejohn.org/blog/dom-insertadjacenthtml/

5.textContent
这个是针对元素中的文本内容的操作,提取元素本身和其子元素中文本内容,这个用的频率不是很高,但还是要知道下, 比如:

<div id="test"><p>whatever, blah blah.</p>hello,I am a <em>Demo</em></div> 
$('test').textContent //whatever, blah blah.hello, I am a Demo

把文本直接连接起来。IE9+和其他浏览器都很好的支持此方法。

6.innerText
这个也是由IE最初引入的,除了firefox,目前其他浏览器也都支持,但是结果有些微妙的不同。在opera中,结果和textContent一致,在chrome中,与包含该文本元素的样式有关。在IE9中,与包含该文本元素的样式有关。 事实上,innerText和textContent看似差不多,但还是有一些值得注意的不同之处。 具体MDN上有一定的说明:

1.textContent能够获取script,style元素中得文本。innerText不行

2.innerText结果跟样式有关,不能获取隐藏元素的文本内容,textContent则不受限制

3.innerText会触发浏览器内部的reflow事件,而textContent不会,这个对效率有点影响。

当然对于IE6~8,我们可以比较容易地通过遍历节点来实现textContent的效果。如犀牛书中所给出的解决方法:

function textContent(e) { 
var child, type, s = []; // s holds the text of all children 
for(child = e.firstChild; child != null; child = child.nextSibling) { 
type = child.nodeType; 
if(type === 3 || type === 4) { //Text and CDATASection nodes 
s.push(child.nodeValue); 
} else if(type === 1) { 
s.push(textContent(child)); 
} 
return s.join(''); 
} 
}
Javascript 相关文章推荐
javascript 用原型继承来实现对象系统
Mar 22 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
JavaScript中数组成员的添加、删除介绍
Dec 30 Javascript
浅谈下拉菜单中的Option对象
May 10 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
JavaScript判断数字是否为质数的方法汇总
Jun 02 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 Javascript
Vue+Django项目部署详解
May 30 Javascript
vue-resourc发起异步请求的方法
Feb 11 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 #Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 #Javascript
js change,propertychange,input事件小议
Dec 20 #Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 #Javascript
Javascript面向对象设计一 工厂模式
Dec 20 #Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 #Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 #Javascript
You might like
php的mssql数据库连接类实例
2014/11/28 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
Highcharts入门之简介
2016/08/02 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
极简的Python入门指引
2015/04/01 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
团队精神演讲稿
2013/12/31 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
档案信息化建设方案
2014/05/16 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
财务人员入职担保书
2015/09/22 职场文书
教师岗位说明书
2015/09/30 职场文书
个人道歉信大全
2019/04/11 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python