document.getElementById ("someId") Vs. someId - PullRequest
       6

document.getElementById ("someId") Vs. someId

7 голосов
/ 01 декабря 2010

Этот вопрос может показаться глупым, но в чем разница между доступом к элементу (с идентификатором "someId") с использованием document.getElementById ("someId") Vs.просто введите someId?

например:

document.getElementById("someId").style.top = "12px";

против

someId.style.top = "12px";

Вот пример кода http://jsfiddle.net/pRaTA/ (я обнаружил, что он не работаетв firefox)

Ответы [ 5 ]

6 голосов
/ 01 декабря 2010

Разница в том, что хотя someId работает в некоторых браузерах, document.getElementById("someId") фактически соответствует стандарту W3C.

2 голосов
/ 01 декабря 2010

Объявление идентификатора DOM элемента не означает, что он доступен как глобальная переменная во всех браузерах. Единственный кросс-совместимый способ получить это сначала сделать.

var someId = document.getElementById("someId");

Редактировать: Я сделал этот тестовый код, который проверяет, что браузеры на основе webkit, кажется, делают id доступным как переменную без предварительного ее объявления. Согласно this , также IE будет показывать это поведение.

  • Firefox: объект / не определено
  • Safari: объект / объект
  • Chrome: объект / объект
  • IE: объект / объект (непроверенный)

Код:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>
0 голосов
/ 01 декабря 2010

Доступ к элементам как к свойствам глобального объекта, названного в честь идентификатора элемента (ваш второй пример), является удобством, которое возникло в IE и было скопировано Safari и Chrome. Это действительно плохая идея, и вы не должны ее использовать. Основная проблема заключается в именовании коллизий (например, элементов с совершенно корректными идентификаторами, таких как «alert» или «document»).

document.getElementById(), с другой стороны, является давно установленным стандартом DOM и, кроме некоторых идиотских недостатков IE , является надежным. Всегда используйте его в предпочтении к другой форме.

0 голосов
/ 01 декабря 2010

Использование только someId - это старый способ выбора элемента (я думаю, это было реализовано в IE). document.getElementById является стандартным, который работает во всех браузерах.

Учитывая сценарий, что вы поддерживаете только старые браузеры IE. document.getElementById еще более надежен и удобочитаем. Надежно, если вы используете все номера для идентификаторов.

например:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't
0 голосов
/ 01 декабря 2010

В сценариях на стороне клиента мы делаем document.getElementById, чтобы получить элемент obj на веб-странице. Чтобы извлечь конкретный элемент из DOM и его свойства и методы, вам нужно использовать метод getElementById. В Jquery вы можете просто сделать var objX = $ ('# id')

Где, если записать идентификатор прямо, не сделает работу. Потому что, как вы извлечете элемент obj из DOM, не пересекая документ. Метод document.getElementById извлекает информацию об элементе из документа. Надеюсь, в этом есть какой-то смысл.

...