Si consideri il seguente codice:html elemento id come javascript variabile
<html>
<head></head>
<body>
<div id='test' class='blah'>
<a href='http://somesite.com/' id='someLink'>click!</a>
</div>
</body>
</html>
Così ho recentemente scoperto che questo crea un oggetto JavaScript chiamato someLink
e posso per esempio ottenere il valore dell'attributo href con someLink.href
. Ho provato questo negli ultimi Chrome, FF e IE e funziona.
Innanzitutto, per quanto tempo è stata utilizzata questa "funzione"? Immagino probabilmente un po ', perché ho saputo per anni che gli ID per gli elementi html su una pagina devono essere unici, e se hai più di un elemento che condivide lo stesso ID, l'ultimo sovrascrive quello precedente, e usando per esempio getElementById() restituirà l'ultimo. Ma non ho mai veramente capito perché, ma ora, guardandolo come una prospettiva "questo sta creando un oggetto", ha senso. Quindi, per quanto riguarda l'accesso diretto con l'oggetto id-name-as-javascript ... quanto tempo è passato? Era IE6? In precedenza?
2 ° ... Immagino che questo sia più un punto di discussione che una domanda, ma ... IMO questo non sembra un ottimo "elemento" per avere ... Non è il punto di avere un DOM e un wrapper funzionano come getElementById()
, per dare qualche organizzazione e, cosa più importante, ridurre i problemi di namespace? Non credo dovrei essere preoccupato per gli elementi HTML casuali su una pagina che sovrascrivono le mie variabili javascript (qualcosa che è accaduto di recente, ed è per questo che ho scoperto questa "caratteristica"). Qualcuno sa perché questo è così com'è, qual è la logica dietro di esso?
"Ho saputo per anni che gli ID per gli elementi html su una pagina devono essere unici e se si dispone di più di un elemento che condivide lo stesso ID, l'ultimo sovrascrive quello precedente e utilizza per esempio getElementById() restituirà l'ultimo "Per quanto ne so,' getElementById() 'restituirà il ** primo **, non l'ultimo, elemento che ha l'ID dato; anche se non è assolutamente coerente (o, almeno, non si dovrebbe fare affidamento sulla coerenza). –
Colpisci l'unghia sulla testa con il tuo secondo punto. Non * è * una buona caratteristica, ed è per questo motivo che è stata deprecata da sempre e non funzionerà se si sta usando la direttiva '' use strict ''. – zzzzBov