Что это за узел «Текст объекта» в дереве DOM? - PullRequest
1 голос
/ 29 апреля 2019

У меня есть файл html / JS, в котором есть кнопки для навигации по дереву DOM и отчета о посещаемом в данный момент узле.

    <!DOCTYPE HTML>
    
        
            Example
            
            
            
                pre {border: medium double black;}
            
        
        
            

Есть много разных видов фруктов - более 500 сортов один банан . К тому времени мы добавим бесчисленное множество типы яблок , апельсины </ span = "апельсин"> и другие известные фрукты, мы столкнулся с тысячами вариантов.

Одним из наиболее интересных аспектов фруктов является сорт, доступный в каждая страна. Я живу недалеко от Лондона, в районе, который известен его яблоки.

var resultsElem = document.getElementById ("results"); var element = document.body; var buttons = document.getElementsByTagName ("кнопка"); for (var i = 0; i

Когда я сначала нажимаю кнопку «родитель», а затем кнопку «первый ребенок», ее вывод дается в конце поста.

На что ссылается узел «Текст объекта»? Представляет ли он все содержимое элемента <body>?

Является ли узел "Текст объекта" узлом Text? Почему elem.wholeText не выводит ничего в «Элемент текстовое содержимое», учитывая, что узел является «объект Текст»?

enter image description here

Ответы [ 2 ]

4 голосов
/ 29 апреля 2019

Каждая часть документа DOM обычно называется «узлом», а узлы бывают разных типов .Узел Text - это не элемент, а любая часть документа, содержащая необработанный текст.

Примите следующее.Сколько узлов вы видите?

<p>Hello!</p>

Есть 2. Узел элемента p и текстовый узел внутри него как его firstChild.Все узлы имеют свойство nodeValue, но, что удивительно, узлы элементов, содержащие текст, не имеют nodeValue, их фактическое значение находится в текстовом узле, который является дочерним элементом узла элемента.

console.log(document.querySelector("p").nodeType);   // 1
console.log(document.querySelector("p").nodeValue);  // null
console.log(document.querySelector("p").firstChild.nodeType);  // 3
console.log(document.querySelector("p").firstChild.nodeValue); // Hello!
<p>Hello!</p>

Весь текст будет находиться внутри некоторого элемента, и это означает, что наиболее часто встречающиеся текстовые узлы часто создаются из-за пробелов, включенных в исходный код (возврат каретки, табуляция, пробелы).

Я добавил дополнительную строку к вашему выводу, которая выдает номер типа узла, и вы можете видеть, что когда вы нажимаете кнопку «Первый дочерний», он сообщает тип узла 3 (текстовый узел), а не когдаВы нажимаете кнопку «Родительский узел», которая выдает 1 (элементный узел).

<!DOCTYPE HTML>
    
        
            Example
            
            
            
                pre {border: medium double black;}
            
        
        
            
Есть много разных видов фруктов - более 500 сортов бананов .К тому времени мы добавляем бесчисленные виды яблок ,апельсиныи другие известные фрукты, мы сталкиваемся с тысячами вариантов.

Одним из наиболее интересных аспектов фруктов является сорт, доступный в каждой стране.Я живу недалеко от Лондона, в районе, который известен своими яблоками.

Родитель Первый ребенок Предыдущий брат Следующий брат

var resultsElem = document.getElementById ("results");var element = document.body;var buttons = document.getElementsByTagName ("кнопка");for (var i = 0; i
1 голос
/ 29 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...