Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2014, 07:30
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

Доступ к элементу в дереве DOM
Привет
Есть разметка
<ul>
      <li><img src="1.png"></li>
      <li><img src="2.png"></li>
      <li><img src="3.png"></li>
      <li><img src="4.png"></li>
      <li><img src="5.png"></li>
      <li><img src="6.png"></li>
      <li><img src="7.png"></li>
      <li><img src="8.png"></li>
      <li><img src="9.png"></li>
      <li><img src="10.png"></li>
</ul>


нужно переписать строку, удаляющую Li с jQuery
$("ul li:first").remove();

на javascript. Я написал

var mainObj = document./*getElementsByTagName("ul").*/getElementsByTagName("li")[0];
var img = mainObj.firstChild;
mainObj.removeChild(img);


Сначала хочу удалить img, а потом li, сразу li не знаю как

Сейчас работает, но не всегда. Если раскомментировать, будет ошибка. Нужен полный аналог строки $("ul li:first").remove();

Последний раз редактировалось OlegALL, 21.05.2014 в 07:38.
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2014, 08:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

var ul = document.getElementsByTagName("ul");
for(var i = 0; i < ul.length; i++){
    var li = ul[i].getElementsByTagName("li")[0];
    if(li){
        li.parentNode.removeChild(li);
        break;
    }
}
а вообще:
var li = document.querySelector("ul li:first-child");
li.parentNode.removeChild(li);
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2014, 08:33
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

А зачем в цикле перебирать? Почему нельзя достичь элемента, примерно как я написал?
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2014, 08:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от OlegALL
А зачем в цикле перебирать? Почему нельзя достичь элемента, примерно как я написал?
Сообщение от OlegALL
mainObj.firstChild
Внутри mainObj первым может оказаться пустой текстовый узел.
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2014, 10:00
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 21.05.2014, 11:21
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

Помогите ещё преобразовать эти строки?

$("ul").append("<li><img src=''></li>");
$("ul").prepend("<li><img src=''></li>");
Ответить с цитированием
  #7 (permalink)  
Старый 21.05.2014, 12:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Сообщение от OlegALL Посмотреть сообщение
А зачем в цикле перебирать?
Сообщение от OlegALL
Нужен полный аналог

Сообщение от OlegALL Посмотреть сообщение
Почему нельзя достичь элемента, примерно как я написал?
Если же аналог нужен таки не полный, и у вас на странице гарантировано первым идёт нужный ul, то можно и как вы хотели:
var mainObj = document.getElementsByTagName("ul")*!*[0]*/!*.getElementsByTagName("li")[0];
mainObj.parentNode.removeChild(mainObj );

Сообщение от OlegALL Посмотреть сообщение
Помогите ещё преобразовать эти строки?
$("ul").append("<li><img src=''></li>");
$("ul").prepend("<li><img src=''></li>");
Нет. Вот вам учебник.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 21.05.2014, 12:52
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

При преобразовании

$("ul").append("<li><img src=''></li>");
$("ul").prepend("<li><img src=''></li>");


достаточно много кода получится?
Ответить с цитированием
  #9 (permalink)  
Старый 21.05.2014, 13:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Нет.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 21.05.2014, 13:35
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

document.querySelector("ul").innerHTML += "<li><img src=''></li>"; - так плохо? Для append(). Сейчас моргает моргает слайдер, с append() - нет. Моргает наверно из-за того, что динамически увеличивается узел ul.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Применить css к DOM элементу через n-колено Sherminator Events/DOM/Window 2 14.02.2013 21:37
Доступ к элементу по имени переменной sanyomix Общие вопросы Javascript 2 28.12.2012 11:31
Выборка((( получить доступ к дочернему элементу denfer12 Общие вопросы Javascript 1 13.08.2012 15:46
Невозможно обратиться к только что вставленному элементу DOM Vovan91 jQuery 6 19.01.2012 14:59
Получить доступ к элементу полученному через ajax Neokortex jQuery 10 14.01.2011 16:27