getElementById restituisce null?

document.getElementById('id of div that definately exists') restituisce null.

Inizialmente avevo caricato il javascript per assicurarmi che non avrei dovuto preoccuparmi dell’evento onload. Ho anche provato a utilizzare l’evento onload. È molto spettrale. Qualsiasi idea o aiuto sarebbe molto apprezzato.

Può essere causato da:

  1. Sintassi HTML non valida (alcuni tag non sono chiusi o errore simile)
  2. ID duplicati: ci sono due elementi DOM HTML con lo stesso ID
  3. Forse l’elemento che stai cercando di ottenere dall’ID viene creato dynamicmente (caricato da Ajax o creato dallo script)?

Per favore, pubblica il tuo codice.

Fai anche attenzione a come esegui il js sulla pagina. Ad esempio se fai qualcosa del genere:

 (function(window, document, undefined){ var foo = document.getElementById("foo"); console.log(foo); })(window, document, undefined); 

Questo restituirà null perché avresti chiamato il documento prima che fosse caricato.

Migliore opzione ..

 (function(window, document, undefined){ // code that should be taken care of right away window.onload = init; function init(){ // the code to be called when the dom has loaded // #document has its nodes } })(window, document, undefined); 

Ci possono essere molte ragioni per cui document.getElementById non funziona

  • Hai un ID non valido

    I token ID e NAME devono iniziare con una lettera ([A-Za-z]) e possono essere seguiti da qualsiasi numero di lettere, cifre ([0-9]), trattini (“-“), trattini bassi (“_”) , due punti (“:”) e punti (“.”). (risorsa: quali sono i valori validi per l’attributo id in HTML? )

  • hai usato qualche id che hai già usato come nome nel tuo header (es. copyright, author …) sembra strano ma mi è successo: se stai usando IE dai uno sguardo a (risorsa: http: // http://www.phpied.com/getelementbyid-description-in-ie/ )

  • stai bersagliando un elemento all’interno di un frame o iframe. In questo caso, se l’iframe carica una pagina all’interno dello stesso dominio del genitore, è necessario indirizzare il contentdocument prima di cercare l’elemento (risorsa: chiamata di un ID specifico all’interno di un frame )

  • stai semplicemente osservando un elemento quando il nodo non è effettivamente caricato nel DOM, o forse è un semplice errore di ortografia

Dubito che tu abbia usato lo stesso ID due o più: in questo caso document.getElementById dovrebbe restituire almeno il primo elemento