Javascript.RU

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

GetElementById - пометить несколько элементов
Помогите пэхапешнику...

Нескольким элементам на странице задаю одинаковый ID.
Затем из функции задаю для этого ID определенный стиль.
Меняется только первый встречающийся элемент.

Что, никак нельзя без массива и прокрутки в цикле изменить стиль одним вызовом GetElementById?

Может, есть другой простой способ?
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2011, 13:31
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Эдди,


А ничё что id должен быть уникальным?
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2011, 13:37
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

http://javascript.ru/tutorial/dom/search#comment-1770
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2011, 14:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

document.getElementsById = function(id){
    var el = document.getElementById(id);
    if(!el) return el;
    var els = document.getElementsByTagName(el.tagName),
        i = 0,
        res = [];
    
    while(els[i]){
        if(els[i].id==id)
            res.push(els[i]);
        i++;
    }
    return res;
};


DEMO:
<script>
document.getElementsById=function(e){var a=document.getElementById(e);if(!a)return a;for(var a=document.getElementsByTagName(a.tagName),b=0,c=[];a[b];)a[b].id==e&&c.push(a[b]),b++;return c};
</script>
<div id="a">lol</div><div id="a">lol</div><div id="a">lol</div><div id="a">lol</div><div id="a">lol</div>
<script>
*!*
document.getElementsById('a').forEach(function(a){a.style.border="1px red solid"});
*/!*
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2011, 16:19
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Сообщение от Seva1986 Посмотреть сообщение
Эдди,


А ничё что id должен быть уникальным?
Оба на!
Ну так и думал. Не люблю циклы, блн.
Хотя в php тоже только массив.

melky В код не вникал сильно, но легче (проще, то есть) разве нельзя сделать?
Сам попробую, выложу... (если получится)

И не считайте меня неучем, но насчет уникальности ID я нигде не читал. Ни в пособиях, ни в инете.-(
Мог бы просто догадаться...

По-любому - СПАСИБО!!!

Последний раз редактировалось Эдди, 16.10.2011 в 16:35.
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2011, 16:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от melky
var a=document.getElementById(e);if(!a)return a;for(var a=document.getElementsByTagName(a.tagName)
Элементы с одинаковым ID имеют одинаковый tagName? Сильное предположение.
Ответить с цитированием
  #7 (permalink)  
Старый 16.10.2011, 16:56
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Сообщение от B@rmaley.e><e Посмотреть сообщение
Элементы с одинаковым ID имеют одинаковый tagName? Сильное предположение.
Хотелось бы. Могу выделить их в одинаковые tagname.
Только сайт постоянно видоизменяется.
И если завтра добавлю те же теги для других функций, получится каша. Не так?

А просто getbyname тоже не канает?
Читал, что только определенные теги его поддерживают. Но, может, это устарело?

Мне надо пометить тексты в ячейках таблицы.
Ответить с цитированием
  #8 (permalink)  
Старый 16.10.2011, 17:00
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Маркируйте нужные элементы указанием class'а (благо, они совсем не обязаны быть уникальными, и можно назначить несколько классов одному элементу) и выбирайте элементы с помощью getElementsByClassName (только не забудьте, что очень старые браузеры вроде IE6 не знают такого метода).
Ответить с цитированием
  #9 (permalink)  
Старый 16.10.2011, 17:02
Профессор
Отправить личное сообщение для Эдди Посмотреть профиль Найти все сообщения от Эдди
 
Регистрация: 19.06.2010
Сообщений: 279

Давайте смысл опишу того, что мне надо. Может, придет какое более простое решение.

Онлайн-заказ.
Человек заказал кучу разнообразных товаров.

В конце ему выводится таблица, где в строках все эти товары выводятся.
Со стоимостью, с его скидкой. Скидка где есть, где ее нет.
И возникает вопрос, а почему там совокупность товара стоила, скажем, 100 долларов и комиссия была 10%, а почему к оплате не 90 долларов, к 85?
А потому что, каждый раз приходится объяснять, что не со всех товаров дается одинаковая комиссия. С некоторых не дается вообще.

Потому: Хочется сделать "для дурака".
В таблице внизу будет только ИТОГО.
А при желании, при клике на Цены подробно, появятся все цены в таблице.

Не знаю, объяснился или нет.-(

B@rmaley.e><e Можно конкретнее или ссылку? Не понял. Не дружу с очень нравящимся мне js
То есть, ввести новый класс и помечать как класснейм?
Как же мне не хотелось создавать лишние классы.
Но, наверное, это тоже выход, как и тот, который с прокруткой массива...

Последний раз редактировалось Эдди, 16.10.2011 в 17:14.
Ответить с цитированием
  #10 (permalink)  
Старый 17.10.2011, 01:08
Профессор
Отправить личное сообщение для Seva1986 Посмотреть профиль Найти все сообщения от Seva1986
 
Регистрация: 01.10.2011
Сообщений: 422

Эдди,
Использовать классы вместо id

Я же ссылку выложил http://javascript.ru/tutorial/dom/search#comment-1770

Там пример функции которая эмитирует работу getElementsByClassName http://javascript.ru/tutorial/dom/search#drugie-sposoby насколько я понял кросбраузерно (сам не пробовал)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацепить одновременно несколько элементов. LRCenter Events/DOM/Window 4 14.03.2011 09:22
Несколько созданных элементов располагаются в одной строке. Как этого избежать? Hold Events/DOM/Window 1 21.01.2011 23:52
как создать в цикле несколько дочерних элементов одного уровня? DimonCry Общие вопросы Javascript 11 13.01.2011 10:46
hover - несколько элементов как один megapup Events/DOM/Window 3 28.10.2010 20:06
Как обработать несколько элементов подряд? vladymyrk jQuery 1 07.01.2009 20:33