Javascript.RU

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

зачем getElementById
Зачем нужен getElementById, если все элементы и так доступны по id?
Пишу просто имя элемента, которое было объявлено в html, и все работает. Во всех источниках пишут про getElementById, как будто другого способа нет. В чем секрет и где зарыта собака?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2015, 16:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от catapulta
В чем секрет и где зарыта собака?
То, что есть у тебя сейчас, не всегда было... Было время и самого метода getElementById не было...
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2015, 17:42
Интересующийся
Посмотреть профиль Найти все сообщения от sogoodweather
 
Регистрация: 09.06.2015
Сообщений: 26

Возможно дело в том, что если id переопределен, при прямом доступе разные браузеры начинают вести себя по-разному. Если соблюдается условие 1 id -- 1 элемент, то все ок, можно без getElementById.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2015, 19:25
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
В чем секрет и где зарыта собака?
В нарушении инкапсуляции. Что, если понадобится объявить переменную с тем же именем, что ид какого-то элемента? Это устаревший способ, который существовал на самых первых порах веба и сохраняется лишь для обратной совместимости (и только в нестрогом режиме).
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2015, 19:31
Интересующийся
Посмотреть профиль Найти все сообщения от sogoodweather
 
Регистрация: 09.06.2015
Сообщений: 26

Сообщение от Erolast
Что, если понадобится объявить переменную с тем же именем, что ид какого-то элемента?
LOL, инкапсуляция, она такая инкапсулированная. Что если придется объявить переменную, которая уже существует.
Ответить с цитированием
  #6 (permalink)  
Старый 10.06.2015, 05:36
Новичок на форуме
Отправить личное сообщение для catapulta Посмотреть профиль Найти все сообщения от catapulta
 
Регистрация: 09.06.2015
Сообщений: 4

Сообщение от sogoodweather Посмотреть сообщение
Возможно дело в том, что если id переопределен, при прямом доступе разные браузеры начинают вести себя по-разному. Если соблюдается условие 1 id -- 1 элемент, то все ок, можно без getElementById.
А getElementById при двух id разве не ведет себя по-разному в разных браузерах? Там тоже есть требование к уникальности id.
Мне не нравится, что про это нигде не написано. Возможность есть описания нет.
Ответить с цитированием
  #7 (permalink)  
Старый 10.06.2015, 05:41
Новичок на форуме
Отправить личное сообщение для catapulta Посмотреть профиль Найти все сообщения от catapulta
 
Регистрация: 09.06.2015
Сообщений: 4

Сообщение от Erolast Посмотреть сообщение
В нарушении инкапсуляции. Что, если понадобится объявить переменную с тем же именем, что ид какого-то элемента? Это устаревший способ, который существовал на самых первых порах веба и сохраняется лишь для обратной совместимости (и только в нестрогом режиме).
По-моему, то, что удобнее, то и более современное. Кучу кода можно удалить. Зачем загружать данные, создавать для них переменные, если они и так уже загружены? Или они не загружены, а поиск в DOM объекте выполняется при каждом неизвестном имени?
В Flash это например есть, там назначается actionscript имя переменной или класса, а потом просто к ним обращаешься из кода и все. Что тут устаревшего не понимаю

Последний раз редактировалось catapulta, 10.06.2015 в 05:53.
Ответить с цитированием
  #8 (permalink)  
Старый 10.06.2015, 05:55
Новичок на форуме
Отправить личное сообщение для catapulta Посмотреть профиль Найти все сообщения от catapulta
 
Регистрация: 09.06.2015
Сообщений: 4

a.b.c (через точку к дочерним элементам) нельзя обращаться.
Ответить с цитированием
  #9 (permalink)  
Старый 12.06.2015, 10:05
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
По-моему, то, что удобнее, то и более современное.
Нет. Код должен быть еще и очевидным.

Цитата:
a.b.c (через точку к дочерним элементам) нельзя обращаться.
Можно document.getElementById("a").getElementById("b"), но зачем? Результат будет тот же, что и при document.getElementById("b"), идентификатор уникальным же должен быть.

Цитата:
Или они не загружены, а поиск в DOM объекте выполняется при каждом неизвестном имени?
Да.
http://www.w3.org/TR/html5/browsers....-window-object
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета времени с кнопками denisich84 Общие вопросы Javascript 31 20.01.2015 17:48
Я нуб, нужна помощь в JS - getElementById Jotunn Общие вопросы Javascript 5 18.06.2014 14:12
Зачем у NodeList и HTMLCollection свойство length enumerable? danik.js Общие вопросы Javascript 5 27.03.2013 11:02
Зачем нужна session_ destroy() ? jsuse Серверные языки и технологии 2 03.03.2012 08:19
Таймер отсчета времени с кнопками denisich84 Работа 10 16.02.2012 16:25