ClockMeister Ответов: 1

Понимание на дом


Ладно, ребята, это просто сводит меня с ума. Я немного изучаю Javascript и пытаюсь понять, как JS решает эту проблему. Вот фрагмент кода:

<!DOCTYPE html> 
<html>
	<head>
		<title>JavaScript Programmer's Reference</title>
	</head>
	<body>
		<p id="myParagraph">This is my paragraph! <span class="hideme1">Lorem ipsum</span> dolor sit amet.
			<span></span>
		</p>
		<p class="hideme2">Another paragraph!</p>
		<script>
			alert(document.childNodes[1].childNodes[2].childNodes[3].className);  // will alert "hideme2"
		</script>
    </body>
</html>


Теперь, если HTML (DOM?) организован в виде дерева, то как ссылка "document.childNodes[1].childNodes[2].childNodes[3] приводит нас к этому 2-му абзацу в теле? В предупреждении отображается "hideme2".

Я вижу, что DOCTYPE-это document.childNodes[0], а HTML-блок-document.childNodes[1]. Я бы ожидал , что тогда будет document.childNodes[1].childNodes[1], верно? Я не вижу, как существует даже document.childNodes[1].childNodes[2], не говоря уже о 3-м уровне под ним.

Я явно что-то упускаю здесь, но вижу только 3 элемента, которые подчинены телу, 2 абзаца и блок. Я бы ожидал, что 2-й абзац будет document.childNodes[1].childNodes[1].childNodes[1] (предполагая, что все основано на 0, как обычно). Чего я здесь не вижу?

Спасибо,

СМ

&ЛТ;б&ГТ;то, что я пробовала:&ЛТ;/б&ГТ;

Почесываю в затылке и изучаю рекомендации дома.

1 Ответов

Рейтинг:
0

Richard Deeming

Попробуйте воспользоваться инструментами разработчика браузера. Firefox имеет DOM explorer, который может помочь. Альтернативно, этот онлайн просмотра дом [^] работает довольно хорошо.

document.childNodes:
    [0] = <!DOCTYPE html>
    [1] = <html>
        .childNodes:
            [0] = <head>
            [1] = #whitespace#
            [2] = <body>
                .childNodes:
                    [0] = #whitespace#
                    [1] = <p id="myParagraph">
                    [2] = #whitespace#
                    [3] = <p class="hideme2">

https://javascript.info/dom-nodes[^]


Maciej Los

5ed!