Значение this
зависит от того, как вы вызываете функцию.
Когда вы вызываете document.getElementById
, тогда getElementById
получает this === document
.Когда вы копируете getElementById
в другую переменную и затем называете ее как $
, тогда this === window
(потому что window
является переменной по умолчанию).
Это заставляет его искать идентификатор вобъект окна вместо объекта документа, и это ужасно терпит неудачу, потому что окна не являются документами и не имеют одинаковых методов.
Вам необходимо сохранить document
в вызове.Для этого вы можете использовать функции-оболочки, например,
function $ (id) { return document.getElementById(id); }
… но, пожалуйста, не используйте $
.Это ужасное имя.Это не имеет смысла, и это сбивает с толку людей, которые видят это и думают: «Ах! Я знаю jQuery!»или "Ах! Я знаю прототип" или т. д. и т. д.