javascript访问嵌套标记之前的文本
如果我有javascript访问嵌套标记之前的文本,javascript,html,nested-lists,Javascript,Html,Nested Lists,如果我有 <ul> <li>...</li> <li>...</li> <li>Text before nested content <ul> <li>...</li> <li>...</li> </ul> </li> </ul> 嵌套内容之前的文本 如
<ul>
<li>...</li>
<li>...</li>
<li>Text before nested content
<ul>
<li>...</li>
<li>...</li>
</ul>
</li>
</ul>
- 嵌套内容之前的文本
如何通过JavaScript访问嵌套内容之前的唯一文本而不将其存储在元素中?
您应该迭代直到找到嵌套内容,然后返回将包含文本的第一个子节点
var top = document.getElementsByTagName("ul")[0];
for( var child in top ){
var c = top[child];
if( !c.hasOwnProperty("nodeName") )continue;
if( c.children.length > 0 ){
alert(c.childNodes[0].textContent);
break;
}
}
这也是jQuery解决方案
您可以设置li
元素的class
或id
(任何允许您轻松选择元素的内容),并使用以下代码获取所需数据:
$("<SELECTOR FOR LI>")
.clone() // clone the element
.children() // select all the children
.remove() // remove all the children
.end() // again go back to selected element
.text(); // get the text of element
$(“”)
.clone()//克隆元素
.children()//选择所有子项
.remove()//删除所有子项
.end()//再次返回到所选元素
.text();//获取元素的文本
欲了解更多详情,请阅读
您还可以在中查看此工作示例
更新
您也可以通过使用纯JavaScript
来实现这一点
只需在子节点(如果至少有一个)上迭代,检查节点类型(3
,表示它是文本节点
),如果它的为true
,concat
则与其余节点一起检查文本。
以下是中的工作示例。
有关节点类型的更多信息,请查看。
此外,您还可以找到有关nodeType
、nodeName
和nodeValue
属性的有用信息。不确定“不将其存储在元素中”是什么意思?您是否将此结构作为字符串,并且不想将其放入DOM中?我的意思是,如果在嵌套内容之前有Text
,则可以直接访问它(例如,在jquery中,txt=$('span').Text()
),但如果它与示例中一样,这是一个非常优雅的解决方案,谢谢。还有一个简单的JavaScript版本吗?我很高兴能帮助你。