如何仅获取包含<span>标签的<p>标签文本

时间:2020-07-30 02:07:29

标签: javascript html

<p class="aaa"> aaa <span class="bbb"> bbb </span> </p>

我只想输入文字'aaa'

但是document.querySelector('p.aaa').innerText --> 'aaabbb'

我怎么只给'aaa'发短信?

4 个答案:

答案 0 :(得分:2)

使用childNodestextContent并使用trim()仅获取p的文本。

运行下面的代码段。

let text = document.querySelector('.aaa').childNodes[0].textContent.trim()

console.log(text) ///aaa
<p class="aaa"> aaa <span class="bbb"> bbb </span> </p>

答案 1 :(得分:2)

此功能将从所选元素中排除任何子HTML元素的内容。它还将考虑子元素之前和之后的文本值。

function getText(selector) {
  return Array.from(document.querySelector(selector).childNodes)
    .reduce((text, node) => text + (node.wholeText || ''), '');
}

console.log(getText('p.aaa'));
<p class="aaa"> aaa <span class="bbb"> bbb </span> ccc </p>

答案 2 :(得分:1)

document.querySelector('p.aaa').firstChild

将按原样返回您要求的文本。然后,如果需要删除多余的空格,可以trim()

但是我也要检查值是否为简单文本,例如'aaa'或标签,以防您可能有其他满足选择器要求的元素,但其第一个子元素可能是html element(tag)而不是simple文字。

答案 3 :(得分:1)

您可以使用:let text = document.querySelector('.aaa').childNodes[0].textContent.trim()