Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2011, 19:57
Rig Rig вне форума
Интересующийся
Отправить личное сообщение для Rig Посмотреть профиль Найти все сообщения от Rig
 
Регистрация: 21.12.2011
Сообщений: 10

Перевод на новую строку JS воспринимает как объект DOM
Прошу прощения за возможно нелепый вопрос, собственно с JavaScript работаю не очень часто и вот возникла следующая ситуация:

В функцию получаю id элемента "UL", пытаюсь через firstChild вычислить id первого элемента "LI". В случае если html код выглядит подобно:
Код:
<ul>
<li>....
firstChild вместо первого "li" находит объект типа text.

А если убрать перевод строки таким образом:
Код:
<ul><li>....
то firstChild находит искомый "li".

Получается, что для нормальной работы с DOM нужно весь код в одну строку писать?
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2011, 20:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

правильно понимает, объект TextNode, берите следующий объект за ним проверяйте по свойству nodeType если равен 3 значит это TextNode, если 1 значит тег

Последний раз редактировалось devote, 21.12.2011 в 20:32.
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2011, 21:08
Rig Rig вне форума
Интересующийся
Отправить личное сообщение для Rig Посмотреть профиль Найти все сообщения от Rig
 
Регистрация: 21.12.2011
Сообщений: 10

Большое спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2011, 21:18
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Rig, как вариант так
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            body { margin:0px; }
        </style>
        <script type="text/javascript">
			function q() {
				var x = document.getElementsByTagName('ul')[0];
				var j = x.getElementsByTagName('li');
				for(var i = 0; i < j.length; i++) {
					alert(j[i].innerHTML);
				}
			}
        </script>
    </head>
    <body onload="q();">
		<ul>
			<li>1</li>
			<li>2</li>
		</ul>
    </body>
</html>
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2011, 22:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,135

Rig,
Вариант ...
document.getElementById(id).children[0]
Ответить с цитированием
  #6 (permalink)  
Старый 21.12.2011, 22:51
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

document.getElementById(id).firstElementChild
Правда, в каком-нибудь IE6 поддерживаться не будет.
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2011, 18:08
Профессор
Отправить личное сообщение для розовый слоник Посмотреть профиль Найти все сообщения от розовый слоник
 
Регистрация: 17.10.2009
Сообщений: 258

document.getElementById(id).getElementsByTagName(' li')[0] - разве так не подходит???
если нет про проганите через while и children

var el = document.getElementById(id).children[0]
while(el.tagName != 'LI'){
el = el.nextSibling
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 14:44
Как преобразовать строку с тегами в DOM элимент GOll Общие вопросы Javascript 7 07.04.2010 09:39
как железно запретить перенос элемента на новую строку? constantant (X)HTML/CSS 6 14.08.2009 00:59
Вставка блока php в js...Как сделать? reup Общие вопросы Javascript 2 30.07.2009 10:02
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 00:12