Il valore di this
dipende da come si chiama la funzione.
Quando si chiama document.getElementById
quindi getElementById
diventa this === document
. Quando si copia getElementById
in una variabile diversa e quindi si chiama come $
quindi this === window
(perché window
è la variabile predefinita).
Questo fa quindi cercare l'id nell'oggetto della finestra anziché nell'oggetto del documento e questo non funziona in modo orribile perché Windows non è un documento e non ha gli stessi metodi.
È necessario mantenere document
nella chiamata. Ad esempio, puoi utilizzare le funzioni wrapper per es.
function $ (id) { return document.getElementById(id); }
... ma si prega di non utilizzare $
. È un nome orribile. Non ha significato e confonderà le persone che lo vedono e pensano "Ah, conosco jQuery!" o "Ah, conosco il prototipo" o ecc. ecc.
potreste trovare la risposta tra le righe in questo post/risposta: http://stackoverflow.com/a/9612657/77047 –
io non sono sicuro che sia una e xact duplicato di per sé, ma questo copre la stessa base di http://stackoverflow.com/questions/6398787/javascript-shorthand-for-getelementbyid – lonesomeday