2013-03-27 10 views
16

Nel mio codice, vedo questo:document.getelementbyId restituirà null se l'elemento non è definito?

if (document.getElementById('xx') !=null) { 
    //do stuff 
} 

se xx elemento non è definito, sarà presente valutata come vera o falsa?

dovrei scrivere:

if (document.getElementById('xx')) 

per essere al sicuro?

+3

... 'null se un elemento con l'ID specificato non è nel documento' ([mdn] (https://developer.mozilla.org/en-US/docs/DOM/document.getElementById)) – raina77ow

+0

'document.getElementById ('xx')' restituirà 'undefined' –

+0

@KhanhTran In effetti restituisce' null'. Provalo nella console. –

risposta

44
console.log(document.getElementById('xx')) evaluates to null. 

document.getElementById('xx') !=null evaluates to false 

Si dovrebbe usare document.getElementById('xx') !== null in quanto è un controllo di uguaglianza più forte.

+1

Grazie. C'è qualche scenario in cui ritornerà indefinito? – Victor

+3

Grazie per aver mostrato il trucco console.log. Ci stai insegnando a pescare. –

+0

Ricordati di rimuovere 'console.log's quando lo rilasci! – jay

5

Sì, restituirà null se non è presente è possibile provare questo di seguito nella demo. Entrambi torneranno veri. I primi elementi esistono, il secondo no.

Demo

HTML

<div id="xx"></div> 

JavaScript:

if (document.getElementById('xx') !=null) 
    console.log('it exists!'); 

    if (document.getElementById('xxThisisNotAnElementOnThePage') ==null) 
    console.log('does not exist!'); 
8

getElementById è definito da DOM Level 1 HTML tornare null nel caso nessun elemento è abbinato.

!==null è la forma più esplicita del controllo, e probabilmente il migliore, ma non c'è non null valore falsy che getElementById può tornare - si può ottenere solo null o un oggetto Element sempre-truthy. Quindi non c'è alcuna differenza pratica qui tra !==null, !=null o il perdente if (document.getElementById('xx')).

+0

Questa dovrebbe essere la risposta accettata dal momento che l'unico valore falso 'getElementById' restituito è' null', non vi è alcun motivo per verificare la presenza di altri valori se si sta cercando di verificare l'esistenza. – cowbert

Problemi correlati