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 相关文章推荐
让你的博客飘雪花超出屏幕依然看得见
Jan 04 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
深入浅析JavaScript的API设计原则
Jun 14 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
jQuery中delegate()方法的用法详解
Oct 13 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 jQuery
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 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 基本语法格式
2009/12/15 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
json 入门基础教程 推荐
2009/10/31 Javascript
js word表格动态添加代码
2010/06/07 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
新闻学专业个人求职信写作
2014/02/04 职场文书
卫生系统先进事迹
2014/05/13 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
委托书格式要求
2015/01/28 职场文书
辞职信格式模板
2015/02/27 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
会议简报格式范文
2015/07/20 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技