【发布时间】:2019-04-12 09:06:50
【问题描述】:
除了'by'还有什么方法可以获取div的内部文字吗?
<div class="name">
"by "
<em>Some Author</em>
", "
<em>Another Author</em>
</div>
【问题讨论】:
标签: html xpath css-selectors
除了'by'还有什么方法可以获取div的内部文字吗?
<div class="name">
"by "
<em>Some Author</em>
", "
<em>Another Author</em>
</div>
【问题讨论】:
标签: html xpath css-selectors
您的 HTML 非常奇怪的是引号和“Some Author”<em> 和逗号之间的空格。我假设您的意思是:
<div class="name">
by <em>Some Author</em>, <em>Another Author</em>
</div>
使用 XPath,您可以使用如下查询获取节点:
//*[@class='name']/node()[position()>1]
如果我们谈论的是浏览器环境,并且您想要一个字符串,而不仅仅是一个节点集合,您可以这样做:
document.querySelector('div.name').textContent.replace(/^\s*by\s*/, '')
【讨论】:
您可以像这样使用 Jquery 进行操作...但它也会删除 ","...
看看吧:
$(document).ready(function(){
var name = $('div').children('em');
$('div').html(name);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="name">
"by "
<em>Some Author</em>
", "
<em>Another Author</em>
</div>
【讨论】:
你可以试试这个表达式:
//em/text()
输出:
'Some Author'
'Another Author'
【讨论】:
您可以尝试在 XPath 下获取所有后代文本节点,第一个除外:
(//div//text())[position() > 1]
【讨论】: