El valor de this
depende de cómo llame a la función.
Cuando llame al document.getElementById
, entonces getElementById
obtiene this === document
. Cuando copia getElementById
en una variable diferente y luego lo llama como $
entonces this === window
(porque window
es la variable predeterminada).
Esto hace que busque la identificación en el objeto de la ventana en lugar de en el objeto del documento, y que falla terriblemente porque las ventanas no son documentos y no tienen los mismos métodos.
Debe mantener el document
en la llamada. Puede usar funciones de contenedor para esto, p.
function $ (id) { return document.getElementById(id); }
... pero no utilice $
. Es un nombre horrible. No tiene ningún significado y confundirá a las personas que lo vean y piensen "¡Ah, lo sé, jQuery!" o "¡Ah! Sé prototipo", etc. etc.
Usted puede encontrar su respuesta entre las líneas en este post/respuesta: http://stackoverflow.com/a/9612657/77047 –
no estoy seguro de que es un correo xact duplicar per se, pero esto cubre el mismo terreno que http://stackoverflow.com/questions/6398787/javascript-shorthand-for-getelementbyid – lonesomeday