2014-01-26 3 views
1

Я новичок в JavaScript, так при этом некоторые обучения я считаю, что элементы с некоторым идентификатором доступны так же, какJavascript DOM доступа элементов по идентификатору без использования функций

HTML часть

<canvas id="someid"><canvas> 

JS часть

someid.someProperty = something; // works as well as getElementById('someid') 

Но во всех учебных пособиях я нашел, что ему предлагается использовать getElementById. Поймите какие выгоды от того или иного способа сделать это? Каким образом я должен предпочесть? Проверено в браузере Firefox, Opera, DWB и geany (webkit).

ответ

1

Использовать document.getElementById("whatever") во всех случаях. Вот некоторые из соответствующих вопросов:

Использования автоматических глобальных переменного имеют следующие вопросы:

  • не стандарт, определенное поведение
  • Не поддерживается во всех браузерах
  • уязвимых к глобальному пространству имен столкновений
  • Некоторые атрибуты имени (но не все) могут использоваться таким образом
  • Может иметь коллизии между идентификатором и именем
  • Код менее читабельен, потому что читатель должен выяснить, используете ли вы глобальную переменную, которую вы ранее ввели значение, или это автоматически определяемая переменная.

Использование document.getElementById():

  • Поддерживается стандартный
  • поддерживается во всех браузерах
  • не зависит от каких-либо глобальных переменных
  • Однозначного поведение во всех использует
0

Для JS вы планируете написать это всегда хорошо, чтобы вручную связанные переменные к элементам DOM, в противном случае вы можете получить непредсказуемые результаты, если какой-либо объект привязан к window объекта и разделяет то же имя идентификатора в качестве элемента

var someid = {}; // Some Object 

someid.style.color = "red"; // DOM element remains untouched 
// we just nested properties and values to the 'someid' Object. 
// #someid text has not become red. 

var myElement = document.getElementById('someid'); 
// var myElement = querySelector('#someid'); 
myElement.style.color = "red"; 
// Wow, now it is 
1

Некоторые браузеры создают неявные глобальные переменные для названных элементов DOM. Реферирование элемента таким образом, в Firefox производит следующее предупреждение:

«Элемент ссылается ID/NAME в глобальном масштабе Используйте W3C стандарт document.getElementById() вместо этого.»

Следуйте совету этого предупреждения. Использование getElementById:

  • поддерживается стандартным
  • явно (и, следовательно, более ясно)
  • требует, чтобы создать надлежащим образом-контекстными переменную для каждого элемента, который вы хотите сослаться
  • более узнаваемым современным разработчикам

Нет оснований для использования нестандартного метода.

Смежные вопросы