GetElementById - пометить несколько элементов
Помогите пэхапешнику...
Нескольким элементам на странице задаю одинаковый ID. Затем из функции задаю для этого ID определенный стиль. Меняется только первый встречающийся элемент. Что, никак нельзя без массива и прокрутки в цикле изменить стиль одним вызовом GetElementById? Может, есть другой простой способ? |
Эдди,
А ничё что id должен быть уникальным? |
|
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> |
Цитата:
Ну так и думал. Не люблю циклы, блн. Хотя в php тоже только массив. melky В код не вникал сильно, но легче (проще, то есть) разве нельзя сделать? Сам попробую, выложу... (если получится:)) И не считайте меня неучем, но насчет уникальности ID я нигде не читал. Ни в пособиях, ни в инете.-( Мог бы просто догадаться... По-любому - СПАСИБО!!! |
Цитата:
|
Цитата:
Только сайт постоянно видоизменяется. И если завтра добавлю те же теги для других функций, получится каша. Не так? А просто getbyname тоже не канает? Читал, что только определенные теги его поддерживают. Но, может, это устарело? Мне надо пометить тексты в ячейках таблицы. |
Маркируйте нужные элементы указанием class'а (благо, они совсем не обязаны быть уникальными, и можно назначить несколько классов одному элементу) и выбирайте элементы с помощью getElementsByClassName (только не забудьте, что очень старые браузеры вроде IE6 не знают такого метода).
|
Давайте смысл опишу того, что мне надо. Может, придет какое более простое решение.
Онлайн-заказ. Человек заказал кучу разнообразных товаров. В конце ему выводится таблица, где в строках все эти товары выводятся. Со стоимостью, с его скидкой. Скидка где есть, где ее нет. И возникает вопрос, а почему там совокупность товара стоила, скажем, 100 долларов и комиссия была 10%, а почему к оплате не 90 долларов, к 85? А потому что, каждый раз приходится объяснять, что не со всех товаров дается одинаковая комиссия. С некоторых не дается вообще. Потому: Хочется сделать "для дурака". В таблице внизу будет только ИТОГО. А при желании, при клике на Цены подробно, появятся все цены в таблице. Не знаю, объяснился или нет.-( B@rmaley.e><e Можно конкретнее или ссылку? Не понял. Не дружу с очень нравящимся мне js То есть, ввести новый класс и помечать как класснейм? Как же мне не хотелось создавать лишние классы. Но, наверное, это тоже выход, как и тот, который с прокруткой массива... |
Эдди,
Использовать классы вместо id Я же ссылку выложил http://javascript.ru/tutorial/dom/search#comment-1770 Там пример функции которая эмитирует работу getElementsByClassName http://javascript.ru/tutorial/dom/search#drugie-sposoby насколько я понял кросбраузерно (сам не пробовал) |
Часовой пояс GMT +3, время: 14:38. |