Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2011, 00:12
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

Проблема в работе с тегами html
Как выбрать только те теги, которые не стоят в другом.

К примеру мне нужно в двухуровневом списке выбрать только заголовки (внешний список).

<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>


То есть выбрать те LI которые не стоят в UL
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2011, 08:20
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

var lis = document.getElementsByTagName("li");
var outLis = [];
for (var i = 0; i < lis.length; i++) {
    if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li") outLis.push(lis[i]);
}
// далее работаем с outLis
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2011, 11:32
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

Сообщение от Amphiluke Посмотреть сообщение
var lis = document.getElementsByTagName("li");
var outLis = [];
for (var i = 0; i < lis.length; i++) {
    if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li") outLis.push(lis[i]);
}
// далее работаем с outLis
Спасибо. Но мне нужно чтобы это было универсальным. тое тсь не только для вышеприведенного примера.

А как селать массив ЗАНЧЕНИЙ того, что стоит между найденными тегами.
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2011, 12:01
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Куда уж универсальнее? Можно, конечно, сделать более функционально, например, написать ф-цию, которой можно передавать id контейнера, содержащего вложенные списки. Типа
function(_cont) {
    var cont = document.getElementById(_cont) || document;
    var lis = cont.getElementsByTagName("li");
    // ...
}

Вообще, если хотите большой универсальности, пользуйтесь библиотеками типа jQuery.

Сообщение от zeraid
А как селать массив ЗАНЧЕНИЙ того, что стоит между найденными тегами.
Для вышеприведенного примера можно изменить так:
if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li") outLis.push(lis[i].innerHTML);
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2011, 12:06
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

Сообщение от Amphiluke Посмотреть сообщение
Куда уж универсальнее? Можно, конечно, сделать более функционально, например, написать ф-цию, которой можно передавать id контейнера, содержащего вложенные списки. Типа
function(_cont) {
    var cont = document.getElementById(_cont) || document;
    var lis = cont.getElementsByTagName("li");
    // ...
}

Вообще, если хотите большой универсальности, пользуйтесь библиотеками типа jQuery.


Для вышеприведенного примера можно изменить так:
if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li") outLis.push(lis[i].innerHTML);
Спасибо большое.

И последний вопрос. Мне нужно в HTML документе все двухуровневые списки ПРЕОБРАЗОВАТЬ в таблицу (ну табилцу я знаю как сделать). НО как УДАЛИТЬ список и вместо него поставить таблицу в ЛЮБОМ HTML документе где есть двухуровневый список соответственно.
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2011, 12:19
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Методов DOM для удаления/замены/добавления элементов для этого достаточно.
Ответить с цитированием
  #7 (permalink)  
Старый 09.05.2011, 12:20
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

И судя по вашему примеру он всеравно все выводит.... ПОлынй код в теге body таков.

<body>
<form style="width:800px; ">
<img src="img/mod.jpg" height="38px" width="129px" onClick="Mod()" onmouseover="this.style.opacity=0.4;"
onmouseout="this.style.opacity=1;">
</form>


<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
<li>Level 1 list element</li>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>


</body>


И вот видимо в массив outList он помещает вообще все названия. А не только 3 заголовка.
Ответить с цитированием
  #8 (permalink)  
Старый 09.05.2011, 12:21
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

Сообщение от Amphiluke Посмотреть сообщение
Методов DOM для удаления/замены/добавления элементов для этого достаточно.
спасибо за ссылки. А то данный сайт очень не удобно по структуре сделан.
Ответить с цитированием
  #9 (permalink)  
Старый 09.05.2011, 12:25
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

А где в вашем примере вложенные списки?
Ответить с цитированием
  #10 (permalink)  
Старый 09.05.2011, 12:33
Аспирант
Отправить личное сообщение для zeraid Посмотреть профиль Найти все сообщения от zeraid
 
Регистрация: 27.03.2011
Сообщений: 75

Сообщение от Amphiluke Посмотреть сообщение
А где в вашем примере вложенные списки?
Ну описался. двухуровневые имел в виду как и в 1 сообщении.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opera, FireFox, Chrome - проблема с получение HTML выдеенно фрагмента Frozen Coyote Firefox/Mozilla 1 24.02.2011 15:43
Проблема с кодировкой при работе с СУБД Простодушный AJAX и COMET 2 29.10.2010 10:51
Проблема при работе с плагином jQuery Map Hilight REp0rtER jQuery 3 29.07.2009 22:10
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15
проблема с TabPanel lunina ExtJS 0 30.11.2008 20:29