Как исключить одного потомка в локаторе XPath / CSS - PullRequest
0 голосов
/ 12 апреля 2019

Есть ли способ получить внутренний текст div кроме 'by'?

<div class="name">
    "by "
    <em>Some Author</em>
    ", "
    <em>Another Author</em>
</div>

Ответы [ 4 ]

0 голосов
/ 12 апреля 2019

Что довольно странно в вашем 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*/, '')
0 голосов
/ 12 апреля 2019

Вы можете попробовать выражение:

//em/text()

Выход:

    'Some Author'
    'Another Author'
0 голосов
/ 12 апреля 2019

Вы можете попробовать ниже XPath получить все нисходящие текстовые узлы, кроме первого :

(//div//text())[position() > 1]
0 голосов
/ 12 апреля 2019

Вы можете сделать это с помощью 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...