Найти innerText после элемента

HTML

<div class = "price"><strike>AAA</strike>BBB</div>

Мой вопрос в том, есть ли способ получить только текст «BBB», используя JS. Обратите внимание, что у меня нет доступа к HTML-коду.

Мне нужно получить оба текста (AAA и BBB) по отдельности.

Например document.querySelector('.price strike').innerText который возвращает "AAA"

Для второй части я использую document.querySelector('.price').innerText, который возвращает «AAABBB». Это проблема. Есть ли способ выбрать непосредственно "BBB"?

вероятно, сделайте подстроку, чтобы получить "BBB", из "AAABBB".substr('AAA'.length)

Dmitri Algazin 26.12.2020 14:50

почему бы вам не обернуть BBB в тег span, а затем выбрать его ??

Aftab Ansari 26.12.2020 15:04

вам нужно перебрать только текстовые узлы в интересующем вас элементе

ControlAltDel 26.12.2020 17:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
557
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

в вашем конкретном случае «BBB» является последним дочерним элементом «.price», поэтому вы можете получить его значение так же просто, как:

const text = document.querySelector('.price').lastChild.nodeValue;
document.querySelector('#result').innerHTML = text;
<div class = "price"><strike>AAA</strike>BBB</div>
<div id = "result"></div>

Я не уверен, есть ли какой-либо способ получить этот текст «без забастовки» напрямую, но вы можете добиться того, чего хотите, с помощью небольшого обходного пути. Например, игра с методами slice и indexOf:

const strikeText = document.querySelector('.price strike').innerText;
const allText = document.querySelector('.price').innerText;

const restText = allText.slice(allText.indexOf(strikeText) + strikeText.length)

console.info(strikeText)
console.info(restText)
<div class = "price"><strike>AAA</strike>BBB</div>

Перебрать дочерние узлы и добавить значения узлов из текстовых узлов.

function getNodeText(elem) {
  var txt = "";
  for (let i = 0; i < elem.childNodes.length; i++) {
    if (elem.childNodes[i].nodeType === 3) { //text node
      txt += elem.childNodes[i].nodeValue;
    }
  }
}

Другие вопросы по теме