设置/获取文本节点值的方法
Ways of setting/getting a textNode's value
有很多
方法可以检索/更改文本节点的值:
- 这不是
textnode.value
,只有XUL的东西 -
textContent
[mdn] 在 IE9 之前不受支持 -
data
,由Text
从CharacterData
接口继承 -
nodeValue
[mdn] 从Node
接口
我倾向于使用.data
.推荐哪一个 - 它们都返回相同?
如果你有 [类型 3] textContent TEXT_NODE将返回 nodeValue (MDN):
如果节点是 CDATA 部分、注释、处理指令、 或文本节点,textContent 返回此节点内的文本( 节点值)。
CharacterData 与文本节点 (MDN) 的 nodeValue 相同。
文本、注释和 CDATASection 都实现了 CharacterData,它们在 turn 还实现了 Node。
对于文本节点,它们是相同的。
jQuery(Sizzle)使用nodeValue:
/**
* Utility function for retreiving the text value of an array of DOM nodes
* @param {Array|Element} elem
*/
var getText = Sizzle.getText = function( elem ) {
...
if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
// Use textContent || innerText for elements
if ( typeof elem.textContent === 'string' ) {
return elem.textContent;
} else if ( typeof elem.innerText === 'string' ) {
// Replace IE's carriage returns
return elem.innerText.replace( rReturn, '' );
}
...
// TEXT_NODE
} else if ( nodeType === 3 || nodeType === 4 ) {
return elem.nodeValue;
}
return ret;
};
所以使用数据很好,但textContent只有IE9+,而且速度有点慢。
相关文章:
- 有条件更新d3.js力图中节点的最佳方法
- 节点如何将文件传递到http.write方法
- 如何使用jasmine节点监视依赖模块内部的方法
- 是否有一种基于“查询”来查询Neo4j中的节点的方法;dateProperty”;
- 未捕获的类型错误:对象#<节点列表>没有方法'addEventListener'
- 有没有一种方法可以使用javascript和节点模块(oracledb)将csv导入oracle数据库
- 是否有一种方法可以在节点中同步执行多个JavaScript文件
- 有没有一种方法可以在javascript中为文本节点添加属性
- 对象在节点js中没有方法push
- 有没有一种方法可以在安装npm之前检查节点和npm的版本
- 不能调用未定义节点.js的方法“forEach”
- 使用 casperjs 抓取文本节点的最快方法
- 验证请求参数的最佳方法是帆.js/节点.js
- 如何在节点/环回中同步调用 model.find 方法
- 有没有一种简单的方法可以在节点上双击 vis.js 创建超链接/javascript-action
- 如何承诺一个节点.js插件方法
- 在联系表单中使用节点邮件程序以外的替代方法
- 设置/获取文本节点值的方法
- 查找嵌套 xml 节点的更简单方法
- 节点.js - 使用变量作为对象名称来调用方法