仅选择 html 节点的根项
Select only the root item of a html node
我有这个html代码。
<div class="breadcrumb">
<a href="#" class="breadcrumb">Home</a>
<a class="breadcrumb" href="#">About</a>
<a class="breadcrumb" href="#">History</a>
Message from our Founding Members
</div>
使用javascript,我想从div".breadcrumb"中获取文本。问题是当我运行此代码时,div 下的 a 标签也有一个同名的类:
var names = document.querySelectorAll('.breadcrumb');
return [].map.call(names, function(name) {
return name.textContent;
});
数组的第一个元素获取所有 a 元素的文本内容以及div。我该怎么做才能只获取div 的文本。在这种情况下,我只想返回"来自我们创始成员的消息"。当它们具有所有相同的类时,有没有办法只选择 html 的根项?
谢谢
如果要
从带有 class="breadcrumb"
的 <a>
标签中获取文本,则可以通过使用包含标签类型的更具体的选择器来实现,如下所示:
var items = document.querySelectorAll("div.breadcrumb a.breadcrumb");
var text = [];
for (var i = 0; i < items.length; i++) {
text.push(items[i].textContent);
}
工作演示:http://jsfiddle.net/jfriend00/kVwH8/
如果你试图做的是获得"来自我们创始成员的消息"文本(我从你最初的问题中并不完全清楚),那么你可以这样做:
var items = document.querySelectorAll("div.breadcrumb a.breadcrumb");
// get node after the last item (that should be the desired text node)
var txtNode = items[items.length - 1].nextSibling;
console.log(txtNode.nodeValue); // Message from our Founding Members
工作演示:http://jsfiddle.net/jfriend00/kynuE/
使用div.breadcrumb,因为这会给你带有类面包屑的div,而不是标签。
你可以这样做:
var names = document.querySelectorAll('div.breadcrumb')[0].childNodes;
var text = Array.prototype.reduce.call(names,function(prev,node){
if(node.nodeType === 3) return (prev || '' + node.textContent.trim());
});
console.log(text);
这里有很多 ES5 的东西,比如 trim
和 reduce
所以最好把这些 polyfill 放在手边。
相关文章:
- d3基于用户选择动态更新节点
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- JavaScript选择器:查找包含具有特定属性的子体的节点
- XPath以基于另一个节点按位置选择节点's的位置
- D3:从不同的图表中选择特定的节点
- 通过 AJAX 发送表单,HTML 节点选择用于数据发送
- 如何以编程方式在 jsTree 中选择一个节点并打开所有父节点
- 为什么我不能通过 document.getElementById(“node's_id”).child 选择节点子节点
- 选择一个具有纯 js 与C++ 的节点.js库,并在实现上添加
- 从 d3.js 中的树中选择节点的子节点
- 难以获取使用属性选择的节点的子节点
- Raphael JS选择路径/对象/节点的特定实例
- 使用XPath选择包含文本的节点,而不考虑CasperJS中的空白
- JQuery 选择父节点并更改其类名
- 使用 Sizzle 选择缓存节点的子元素
- 如何判断文本输入字段dom节点是否*没有*带有javascript的选择
- 当用户在命令提示符中选择任何字符串时,节点Js不为任何请求提供服务
- 在jQuery中选择一个具有名称空间的节点
- vis.js中的多节点选择
- 基于当前导航url的树节点选择