Ви використовуєте застарілий браузер. Цей та інші сайти можуть відображатися в ньому некоректно. Необхідно оновити браузер або спробувати використовувати https://www.google.com/chrome/
Суть в том что мне посоветовали не использовать id для идентификации элементов в таблице - даже если я этот через этот id не буду задавать стили.
И судя по тому что я читал, многие вообще никогда не используют id, вместо него задают уникальный идентификатор класса.
Единственное преимущество класса - то что их может быть несколько на странице, работают при этом в среднем более чем в 100 раз медленнее чем id.
Изменения background - это только для тестирования, может быть любое другое применение.
Но если на странице большое количество элементов и предвидится многократное обращение к ним из JavaScript - то замена class на id может существенно ускорить работу скриптов.
Даже если для нескольких объектов нужно изменить стиль, то со стороны производительности выгоднее к каждому из них индивидуально обратится по id чем однократным обращением по классу изменить их общий стиль.
Таблица у меня предполагается с большим количеством ячеек (больше тысячи), к каждой ячейке нужен доступ чтобы изменять ее содержимое.
Тесты что я написал - просто интересно стало насколько быстро работают id и class.
Кстати, если элементов на странице немного, то разница в скорости не такая разительная - не более чем в 10 быстрее работает id, реальные тормоза начинаются когда классов на странице больше тысячи.
У меня в каждой ячейке таблицы может быть два слоя текста и несколько изображений - все перекрывающиеся.
Что именно в ячейке будет зависит от различных событий.
Реализовал так:
Код:
<td>
<div style="position: relative; z-index:1">
<div id="1" style="position: absolute; z-index:3"><img src=circle.gif alt=""></div>
<div id="2" style="position: absolute; z-index:2; left: 27px; top: -13px;"><img src=diamond.gif alt=""></div>
<div id="3" style="position: absolute; z-index:5"><br>вывод через div с перекрытием</div>
</div>
background text
</td>
Но если на странице большое количество элементов и предвидится многократное обращение к ним из JavaScript - то замена class на id может существенно ускорить работу скриптов.
Даже если для нескольких объектов нужно изменить стиль, то со стороны производительности выгоднее к каждому из них индивидуально обратится по id чем однократным обращением по классу изменить их общий стиль.
Надо проверять.
У вас же по-идее одиночные изменения - взяли какой-то блок, поменяли. Потом через время - опять взяли какой-то, поменяли. Т.е. не все сразу. А если все сразу - опять-таки надо делать тесты, смотреть что будет быстрее.
Для Del. Ситуация, когда нет элементов на странице ни с нужным id, ни с классом.
Наоборот.
Итого, ты либо балабол и баран, либо тролль. В любом случае выпей йаду.
Разница кагбэ в 5-10 раз. Кстати, анальный секс появился так же - разница ж небольшая по расстоянию.
Тест я уже показал в реальном проекте. Да и не вижу смысла тратить время на споры о дурацких вещах. Еще могу согласиться, что в "наколеночных интернет магазинах за бутылку пива" можно втулить идентификатор в class и забыть о нем или разглагольствовать как это круто и правильно.
Я тестировал в специально созданном тесте.
До 100 классов на странице - разница с id символическая.
500 - раз в 7 быстрее id
5000 - более чем в 100 раз быстрее id
проверял в файер фокс, опера и хром.
В Хроме все операции в среднем в 2 раза быстрее чем в других браузерах, и в тесте в котором получается элемент по классу и тут же меняется стиль разница незначительная, а если сохранить референс в массив - раз в 60 быстрее получение через id (в том тесте где 5000 классов).
Я тестировал в специально созданном тесте.
До 100 классов на странице - разница с id символическая.
500 - раз в 7 быстрее id
5000 - более чем в 100 раз быстрее id
проверял в файер фокс, опера и хром.
В Хроме все операции в среднем в 2 раза быстрее чем в других браузерах, и в тесте в котором получается элемент по классу и тут же меняется стиль разница незначительная, а если сохранить референс в массив - раз в 60 быстрее получение через id (в том тесте где 5000 классов).
Надо ещё потестировать для адекватного (~500) блоков и прогнать во всех браузерах, но предварительно мы видим следующее:
1. Абсолютная разница по времени, при обращении что по уникальному id, что по уникальному классу, даже при огромном количестве блоков обходимых за раз - невелика.
2. Относительная разница тоже невелика, ни о каких "в 10 раз" речь даже не идёт.
3. Смена стилей по .class в Chrome происходит даже быстрее чем по id
Теперь стоит потестировать при реальном кол-ве блоков (~500), изменить скорости смены стилей заменой класса, добавлением класса-модификатора и т.д.
Да и не вижу смысла тратить время на споры о дурацких вещах. Еще могу согласиться, что в "наколеночных интернет магазинах за бутылку пива" можно втулить идентификатор в class и забыть о нем или разглагольствовать как это круто и правильно.
Ещё раз, для тех кто в танке: речь о недопустимости использования #id для навешивания стилей и о том что производительности .class достаточно для того чтобы в общем случае использовать .class и в js ради удобства разработки, поддержки и развития.
В "наколеночных интернет магазинах за бутылку пива" как раз можно и #id везде тулить и каскады до неба писать. Я рассказываю как нужно делать по-нормальному.
Да вообще то главное как в реальных страницах будут работать id и class
К тому же при небольшом количестве вызовов потери времени незначительные.
В общем, каждый для себя пусть решает.
Я для себя решил что в своем проекте буду использовать id для идентификации отдельных элементов.
Очень часто приходится вешать обработчики на конкретные элементы которые имеют общие классы (например те-же кнопки в одном стиле). Добавляю id и точно знаю на каком элементе висит обработчик. Можно конечно добавлять к каждому такому элементу свой класс, но ИМХО потеряется красота и читаемость кода. Потому как прийдется каждый раз вспоминать нахрена тут этот класс, и что он не оказывает накакого видимого воздействия на элемент.
Ещё раз, для тех кто в танке: речь о недопустимости использования #id для навешивания стилей и о том что производительности .class достаточно для того чтобы в общем случае использовать .class и в js ради удобства разработки, поддержки и развития.
В "наколеночных интернет магазинах за бутылку пива" как раз можно и #id везде тулить и каскады до неба писать. Я рассказываю как нужно делать по-нормальному.
Я не понимаю зачем нужно использовать class не по назначению, когда для этого есть id. Более того, есть id, который для этого и предназначен и за уникальностью, которого следит браузер и другие инструменты, если используются (у меня, например, IDE и фреймворк ругаются). Опять таки они работают как раз с id, но не class.
Очень часто приходится вешать обработчики на конкретные элементы которые имеют общие классы (например те-же кнопки в одном стиле). Добавляю id и точно знаю на каком элементе висит обработчик. Можно конечно добавлять к каждому такому элементу свой класс, но ИМХО потеряется красота и читаемость кода. Потому как прийдется каждый раз вспоминать нахрена тут этот класс, и что он не оказывает накакого видимого воздействия на элемент.
Почему это вдруг красота потеряется?
Свой класс - уникально идентифицирует, вот тебе уже объяснение зачем он там. Потом может возникнуть необходимость задать ему свои стили, у тебя будет идентификатор класса. Опять таки - можешь и префикс ему задать типа "с-" (контрол с которым ассоциирован JavaScript объект, обеспечивающий его функциональность).
var b = Date.now(); console.log("td#id Paint - " + (b - a)+ "ms");
Что такое "a"?
Форматирование кода? Не, не слышал.
Несколько statement'ов на одной строке. Очень читаемо, а отлаживать так ваще.
Понятные имена переменных?
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
Разбитие когда на функции? Смысл уважать людей, которые это будут читать, пускай ломают глаза и моск.
$('#el'+i); Это я так подозреваю jQuery? Но мы ж не за него рассуждаем. Более того, я им не пользовался и не собираюсь. И ковыряться в обфусцированной каше для того, чтоб понять, что стоит за $() не собираюсь. Вроде ж речь шла за document.getElementById vs document.document.getElementsByClassName.
Не удивлюсь, что в резюме ты пишешь "
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
Что такое "a"?
Форматирование кода? Не, не слышал.
Несколько statement'ов на одной строке. Очень читаемо, а отлаживать так ваще.
Понятные имена переменных? А зачем, браузер и так поймет.
Разбитие когда на функции? Смысл уважать людей, которые это будут читать, пускай ломают глаза и моск.
Это testcase. Ты понимаешь в чём разница между кодом для тестирования и реальной разработкой? Какие функции? Может мне надо было ещё css и js отдельно вынести, а jQuery через CDN подключить? По-делу сказать нечего, начинаем придираться к пробелам и именам временных тестовых переменных?
Мне нужен был testcase замерить производительность. На прошлой странице oleozy выложил написанный им. Я исправил в нём ошибки, подрехтовал. Переписывать там имена переменных на t1,t2 или timeStart,timeEnd не стал, это временные тестовые переменные.
$('#el'+i); Это я так подозреваю jQuery? Но мы ж не за него рассуждаем. Более того, я им не пользовался и не собираюсь. И ковыряться в обфусцированной каше для того, чтоб понять, что стоит за $() не собираюсь. Вроде ж речь шла за document.getElementById vs document.document.getElementsByClassName.
Не удивлюсь, что в резюме ты пишешь "хорошо разбираюсь в чужом коде".
Не пишу, но могу У тебя видно не получилось, я поясню:
Да, это jQuery. $() - это алиас для jQuery(). Возвращает коллекцию элементов по css-селектору. Код не обфусцирован. Вот тут азы объясняются:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
Надо ещё потестировать для адекватного (~500) блоков и прогнать во всех браузерах, но предварительно мы видим следующее:
1. Абсолютная разница по времени, при обращении что по уникальному id, что по уникальному классу, даже при огромном количестве блоков обходимых за раз - невелика.
2. Относительная разница тоже невелика, ни о каких "в 10 раз" речь даже не идёт.
3. Смена стилей по .class в Chrome происходит даже быстрее чем по id