Как получить текст первого HTML-элемента - PullRequest
0 голосов
/ 07 июля 2019

Как пройти через HTML DOM, чтобы рекурсивно получить текст каждого элемента. Мне нужно получить текст HTML-элемента только без текста дочерних элементов. Подумайте, есть ли вложенные элементы HTML, как получить текст первого элемента, исключив вложенные дочерние элементы и соответствующие тексты.

Я пробовал " elem.InnerHTML ", " elem.InnerTEXT ", " elem.TextContent ", но кажется, что все они возвращают текст из всех вложенные элементы.

Пример кода: У меня есть HTML, как показано ниже:

<HTML>
    <HEAD></HEAD>
    <BODY>
        <DIV> SOMEDIVTEXT 
            <TABLE>
              <TBODY>
               <TR><TD>COLUMN1</TD></TR>
               <TR><TD>COLUMN2</TD></TR>
              </TBODY>
            </TABLE>
        </DIV>
    </BODY>
</HTML>

Мне просто нужно извлечь SOMEDIVTEXT , пока указатель текущего узла находится в DIV без получения текста вложенных дочерних элементов.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Хорошо, при условии, что (1) вы пишете Javascript в браузере, и (2) у вас есть элемент как объект (вы упомянули 'elem' в вопросе, так что я думаю, что у вас есть?), Затем выможно получить дочерние элементы элемента, используя elem.childNodes().

. Это даст вам объект Nodelist, содержащий каждый узел в элементе.В случае HTML, который вы указали в вопросе, это будет два узла;первый будет текстовым узлом, содержащим текст SOMEDIVTEXT, а вторым будет узел элемента, содержащий элемент <TABLE>.

Таким образом, elem.childNodes[0] получит текст, который вы пытаетесь извлечь.

Но DOM довольно гибок, поэтому есть другие свойства и методы, которые также могут получить тот же эффект, включая 'elem.firstChild', как упомянуто в другом ответе.

0 голосов
/ 07 июля 2019

Попробуйте firstChild свойство.Он получает текстовые узлы.

Например:

document.body.firstElementChild.firstChild

Это работает для этого примера кода.

...