Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / DOM. почему после последнего child "элемента" не может быть текста ? / 20 сообщений из 20, страница 1 из 1
01.12.2016, 14:09
    #39358480
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
Читаю учебник. там такой вопрос
http://learn.javascript.ru/traversing-dom Если elem – это произвольный узел DOM…

Верно ли, что elem.lastChild.nextSibling всегда null?

Верно ли, что elem.children[0].previousSibling всегда null ?

и такой ответ:

http://learn.javascript.ru/traversing-dom Да, верно, с оговоркой. Элемент elem.lastChild последний, у него нет правого соседа.

Оговорка: elem.lastChild.nextSibling выдаст ошибку если elem не имеет детей.

Нет, неверно, это может быть текстовый узел. Значением elem.children[0] является первый узел-элемент, перед ним может быть текст.

Аналогично предыдущему случаю, если у elem нет детей-элементов – будет ошибка.

Я чего-то не понял чем отличаются обе эти ситуации.

http://learn.javascript.ru/traversing-dom Свойства firstChild и lastChild обеспечивают быстрый доступ к первому и последнему элементу.

почему после последнего элемента не может быть текста в таком случае?
...
Рейтинг: 0 / 0
01.12.2016, 15:32
    #39358559
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
questionerпочему после последнего элемента не может быть текста в таком случае?
В каком именно случае?
Случаем называют некий пример разметки. Ты не привел примера разметки...
...
Рейтинг: 0 / 0
01.12.2016, 15:38
    #39358568
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
questionerпочему после последнего элемента не может быть текста в таком случае?
Считайте, что текст в DOM - такой же элемент, просто без имени тега, я думаю автор вашего примера говорит о том, что если взяли последний - то после него ничего нет. (Сорри за каламбур)
...
Рейтинг: 0 / 0
01.12.2016, 15:42
    #39358571
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
questioner , вот некая иллюстрация некой ситуации

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<ul>
	<li>Item 0</li>
	<li>Item 1</li>
	<li>Item 2</li>
</ul>
<script type='text/javascript'>
var o=document.querySelector('ul');
alert(o.firstChild.previousSibling);
alert(o.children[0].previousSibling);
alert(o.lastChild.nextSibling);
alert(o.children[o.children.length-1].previousSibling);
</script>
</body>
</html>


Т.е. есть разница с чем работать, с элементом массива детей или со свойствами "первый" и "последний" ребенок...
...
Рейтинг: 0 / 0
01.12.2016, 15:53
    #39358582
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
krvsaquestionerпочему после последнего элемента не может быть текста в таком случае?
В каком именно случае?
Случаем называют некий пример разметки. Ты не привел примера разметки...
я ж привел ссылку. Разметка может быть любой.
...
Рейтинг: 0 / 0
01.12.2016, 15:54
    #39358585
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanquestionerпочему после последнего элемента не может быть текста в таком случае?
Считайте, что текст в DOM - такой же элемент, просто без имени тега, я думаю автор вашего примера говорит о том, что если взяли последний - то после него ничего нет. (Сорри за каламбур)

а почему перед первым ещё что-то может быть?
...
Рейтинг: 0 / 0
01.12.2016, 15:56
    #39358589
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
krvsa questioner , вот некая иллюстрация некой ситуации

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<ul>
	<li>Item 0</li>
	<li>Item 1</li>
	<li>Item 2</li>
</ul>
<script type='text/javascript'>
var o=document.querySelector('ul');
alert(o.firstChild.previousSibling);
alert(o.children[0].previousSibling);
alert(o.lastChild.nextSibling);
alert(o.children[o.children.length-1].previousSibling);
</script>
</body>
</html>


Т.е. есть разница с чем работать, с элементом массива детей или со свойствами "первый" и "последний" ребенок...
...
Рейтинг: 0 / 0
01.12.2016, 15:57
    #39358590
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
krvsa,

может всё-таки в последнем алерте

Код: javascript
1.
alert(o.children[o.children.length-1].nextSibling);
...
Рейтинг: 0 / 0
01.12.2016, 16:04
    #39358595
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
questionerможет всё-таки в последнем алерте
И что там?

Последнй элемент в массиве детей. После него есть текст...
...
Рейтинг: 0 / 0
01.12.2016, 17:05
    #39358693
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
questioner,

тут ответ на ваш вопрос

Как обычно - рукожопые программисты, пишушие браузеры.
...
Рейтинг: 0 / 0
01.12.2016, 17:45
    #39358754
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanquestioner,

тут ответ на ваш вопрос

Как обычно - рукожопые программисты, пишушие браузеры.

В чем рукожопость можете объяснить?
Я вот вижу кривость перевода, в котором смешивают понятия элементов и узлов. Ну так не не надо читать переводов.
...
Рейтинг: 0 / 0
01.12.2016, 17:49
    #39358764
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
Alexander A. SakВ чем рукожопость можете объяснить?
В пробеле, который есть перед первым элементом. Вообще DOM и его методы - одно сплошное безобразие. Как будто женщина придумала.
...
Рейтинг: 0 / 0
01.12.2016, 22:04
    #39358947
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanAlexander A. SakВ чем рукожопость можете объяснить?
В пробеле, который есть перед первым элементом. Вообще DOM и его методы - одно сплошное безобразие. Как будто женщина придумала.

Не понял. Авторы браузера рукожопы, потому что автор страницы поставил пробел перед первым элементом?
...
Рейтинг: 0 / 0
02.12.2016, 08:20
    #39359067
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanрукожопые программисты, пишушие браузеры.
mage.lanВообще DOM и его методы - одно сплошное безобразие. Как будто женщина придумала.
А я Д`Артаньян! (с)

Т.е. ничего нового...
...
Рейтинг: 0 / 0
02.12.2016, 11:15
    #39359172
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
Alexander A. SakНе понял. Авторы браузера рукожопы, потому что автор страницы поставил пробел перед первым элементом?
Браузер вставляет пробел перед первым элементом, а не автор.

krvsaА я Д`Артаньян! (с)

Т.е. ничего нового...
Плохое утро?
Я и сам рукожоплю иногда. Все прогеры это делают, просто одни считают себя богами, а другие просто горшки лепят.
...
Рейтинг: 0 / 0
02.12.2016, 11:53
    #39359205
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanAlexander A. SakНе понял. Авторы браузера рукожопы, потому что автор страницы поставил пробел перед первым элементом?
Браузер вставляет пробел перед первым элементом, а не автор.


Можете привести пример? В моей картине мира так:

С такой разметкой перед первым <li> есть текстовый узел. То, что мы стали называть "пробелом перед первым элементом".
Код: html
1.
2.
3.
4.
<ul>
<li>First</li>
<li>Second</li>
</li>



С такой разметкой перед первым <li> текстового узла нет.
Код: html
1.
2.
3.
<ul><li>First</li>
<li>Second</li>
</li>



По-вашему, мы должны во втором варианте обнаружить пробел (текстовый узел) перед первым <li>?
...
Рейтинг: 0 / 0
02.12.2016, 12:48
    #39359258
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
Alexander A. Sak,

в моей картине мира, в разметке
Код: html
1.
2.
3.
<ul>
<li>
...


нет пробелов между тегами ul и li
...
Рейтинг: 0 / 0
02.12.2016, 14:04
    #39359336
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanв моей картине мира, в разметке
Код: html
1.
2.
3.
<ul>
<li>
...


нет пробелов между тегами ul и li
А он там есть!
Код: html
1.
2.
3.
4.
5.
6.
7.
<ul>
<li><li>
</ul>
<script type='text/javascript'>
var o=document.getElementsByTagName('ul');
alert(o[0].children[0].previousSibling);
</script>
...
Рейтинг: 0 / 0
02.12.2016, 14:14
    #39359344
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
krvsa,

Алэ?
Никто не читает что-ли...
Именно поэтому я и сказал рукожопы.

При обработке XML всем парсерам надо умышленно говорить preserve space, если нужно, чтобы командные пробелы попадали в обработку.
ДОМ пошел своим "кривеньким" путем. Отношение к пробелам у функций ДОМа - отвратительное, то они их видят, то тримят.
...
Рейтинг: 0 / 0
02.12.2016, 14:29
    #39359357
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOM. почему после последнего child "элемента" не может быть текста ?
mage.lanИменно поэтому я и сказал рукожопы.
Это только в твоей голове...
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / DOM. почему после последнего child "элемента" не может быть текста ? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]