получить текст элемента без дочернего содержимого в javascript - PullRequest
0 голосов
/ 19 апреля 2020

у меня ниже html:

<span id='User_span'>whatup <span>man</span> big guy</span>

Я просто хочу получить содержимое User_span без дочернего или, другими словами, я просто хочу получить what up big guy.

пытался $('#User_span').text();, но также получал и дочерний текст.

Я не против javascript или jquery.

Тест: https://jsfiddle.net/mn9chyst/3/

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Возьмите все дочерние узлы диапазона, которые являются текстовыми узлами, и объедините их вместе. Нет необходимости в большой библиотеке, такой как jQuery, для чего-то такого тривиального:

const { childNodes } = document.querySelector('#User_span');
const result = [...childNodes]
  .filter(node => node.nodeType === 3)
  .map(node => node.textContent)
  .join('');
console.log(result);
<span id='User_span'>whatup <span>man</span> big guy</span>
0 голосов
/ 19 апреля 2020

Вы также можете использовать метод .reduce() следующим образом:

// transform the childNodes HTMLCollection object into an array
var children = [...document.getElementById('User_span').childNodes];

// .nodeType === 3 means text node
var result = children.reduce((acc, el) => { return acc + (el.nodeType === 3 ? el.textContent : ''); }, '');

console.log(result);
<span id='User_span'>whatup <span>man</span> big guy</span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...