Кога да използвате символа „#“, за да получите DOM елемент?

Понякога трябва да получа елементи като този:

var object = document.getElementById('ObjectName');

И понякога така:

var object = document.getElementById('#ObjectName');

Каква е разликата между тях?


person Moondustt    schedule 18.03.2013    source източник


Отговори (4)


Не, не виждаш

var object = document.getElementById('#ObjectName');

Не виждате това, защото това би означавало, че идентификаторът на елемента започва с # и идентификаторът на HTML4 може да започва само с буква ([A-Za-z]).

Това, което виждате, е понякога хора, които използват библиотеката jQuery, в която езикът за заявки ви позволява да намерите обект, използвайки

var elem = $('#objectId');

И в бъдеще ще виждате все повече и повече хора, използващи подобен език за заявки с querySelector или querySelectorAll.

person Denys Séguret    schedule 18.03.2013
comment
Но id атрибутите, започващи с #, са честни в HTML5, така че питащият технически може да е видял този код. - person Frédéric Hamidi; 19.03.2013
comment
@FrédéricHamidi Винаги съм го използвал, което ми позволява да мисля, че OP не се занимава с получаване на код от последните версии на HTML. - person Denys Séguret; 19.03.2013
comment
Този отговор е малко остарял (HTML5 позволява # в началото, въпреки че се препоръчва да се започва с буква и това е бъдещето сега). Другите отговори са по-актуални. Поне оправете несъответстващата скоба. - person Sebastian Simon; 06.07.2020

# е част от ИД селектора в CSS. Има библиотеки и методи, които поддържат CSS селектори за избиране на елементи, като jQuery и родните DOM методи querySelector и querySelectorAll.

Но в "традиционния" DOM ​​метод # няма специално значение. getElementById('#ObjectName') ще избере елемент, който буквално има ID #ObjectName, т.е. <div id="#ObjectName">.

person Felix Kling    schedule 18.03.2013

Първият получава елемент с id="ObjectName". Последният получава елемент с id="#ObjectName".

В контекста на Селектор (както се използва например от CSS и document.querySelector, но не и с getElementById) символът # показва, че текстът след него е идентификатор.

document.querySelector('ObjectName') (използвайки селектор на тип) ще получи <ObjectName /> (невалиден HTML), докато document.querySelector('#ObjectName') ще получи елемент с id="ObjectName".

person Quentin    schedule 18.03.2013

'#ObjectName'

JQuery (EDIT: или други JavaScript библиотеки)

'ObjectName'

DOM (getElementById)

person Muhammad Omar ElShourbagy    schedule 18.03.2013
comment
Синтаксисът на селектора се използва на много повече места от тази JS библиотека. - person Quentin; 19.03.2013
comment
Неуверено сте прав, просто съм свикнал с това, така че това беше първото нещо, което имах предвид, когато мислех за JS библиотеки. - person Muhammad Omar ElShourbagy; 19.03.2013