Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2013, 21:31   #1
FanOfGun
 
Регистрация: 26.10.2012
Сообщений: 9
По умолчанию getElementById для div

Есть div, внутри него есть элемент с нужным мне id, но этот id неуникален в документе, так что я не могу использовать document.getElementById (или могу?). Как это обойти? Обходить все элементы и проверять id как-то неохота. Заранее благодарен.
FanOfGun вне форума Ответить с цитированием
Старый 05.04.2013, 21:39   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

getElementById вернет первый, если не указан parent, так что проще знать parent искомого
eval вне форума Ответить с цитированием
Старый 05.04.2013, 21:43   #3
FanOfGun
 
Регистрация: 26.10.2012
Сообщений: 9
По умолчанию

Можно об это подробнее? Даже в http://www.w3schools.com/jsref/met_d...lementbyid.asp ничего не сказано о parent
FanOfGun вне форума Ответить с цитированием
Старый 05.04.2013, 22:05   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну я немного не так сказал, сори.... у нас свой метод, я на автомате...
проще имея парентид, найти сначала его, а потом в нем уже искомый
вот както так можно сделать
Код:
function getbyid(id,parent)
    if (!parent) return document.getElementById(id);
    if (parent.getElementById) return parent.getElementById(id);
    var nodes = [];
    var childNodes = parent.childNodes;
    for (var i = 0; i < childNodes.length; i++) {
        var n = childNodes[i];
        if (n.nodeType == 1) {
            nodes[nodes.length] = n;
        }
    }
    while (nodes.length) {
        n = nodes.shift();
        if (n.id == id) {
            return n;
        }
        childNodes = n.childNodes;
        for (i = 0; i < childNodes.length; i++) {
            n = childNodes[i];
            if (n.nodeType == 1) {
                nodes[nodes.length] = n;
            }
        }
    }
    return null;
}

Последний раз редактировалось eval; 05.04.2013 в 22:14.
eval вне форума Ответить с цитированием
Старый 05.04.2013, 22:07   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а, и если одинаковые ид-ы на одном уровне, то все-равно перебор нужен
eval вне форума Ответить с цитированием
Старый 05.04.2013, 22:10   #6
FanOfGun
 
Регистрация: 26.10.2012
Сообщений: 9
По умолчанию

спасибо, очень похоже, что это как раз то, что мне нужно.
FanOfGun вне форума Ответить с цитированием
Старый 06.04.2013, 00:17   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от FanOfGun Посмотреть сообщение
но этот id неуникален в документе
id должен быть уникальным по спецификации. Ваш документ не пройдет валидацию. Если нужно пометить несколько элементов, то надо использовать class, а не id.
Arigato вне форума Ответить с цитированием
Старый 08.04.2013, 15:20   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
id должен быть уникальным по спецификации. Ваш документ не пройдет валидацию. Если нужно пометить несколько элементов, то надо использовать class, а не id.
+1, вронгануто это юзать неуникальные айдишники.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что нужно делать чтобы высота div зависила то дочурного div? Duddu HTML и CSS 2 25.04.2012 21:23
макрос вставка текста между тегами <div> </div> nur91m Microsoft Office Word 2 19.10.2011 22:16
div тег как нижний слой для второго div тега dadli HTML и CSS 2 30.07.2010 01:12
особенности мозилы для document.getElementById Wi1D JavaScript, Ajax 4 29.04.2010 22:45
Позиционирование двух плавающих DIV внутри одного DIV allocator HTML и CSS 5 22.07.2009 13:48