2013-03-27 7 views
16

In meinem Code, ich sehe dies:document.geelementbyId gibt null zurück, wenn Element nicht definiert ist?

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

wenn xx Element nicht definiert ist, wird dies wahr oder falsch bewerten?

Sollte ich schreiben:

if (document.getElementById('xx')) 

sicher zu sein?

+3

... 'null, wenn ein Element mit der angegebenen ID nicht im Dokument vorhanden ist' ([mdn] (https://developer.mozilla.org/en-US/docs/DOM/document.getElementById)) – raina77ow

+0

'document.getElementById ('xx')' gibt 'undefined' zurück –

+0

@KhanhTran Tatsächlich gibt es' null' zurück. Testen Sie es in der Konsole. –

Antwort

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

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

Sie sollten document.getElementById('xx') !== null verwenden, da es eine stärkere Gleichheitsprüfung ist.

+1

Danke. Gibt es ein Szenario, in dem es undefiniert zurückkommt? – Victor

+3

Vielen Dank, dass Sie den console.log-Trick gezeigt haben. Du lehrst uns zum Fischen. –

+0

Denken Sie daran, die 'console.log's bei der Veröffentlichung zu entfernen! – jay

5

Ja, es wird null zurückgeben, wenn es nicht vorhanden ist, können Sie das unten in der Demo versuchen. Beide werden wahr werden. Das erste Element existiert das zweite nicht.

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 wird durch DOM Level 1 HTML definiert null in dem Fall zurückzukehren kein Element angepasst ist.

!==null ist die explizite Form der Kontrolle, und wahrscheinlich die beste, aber es gibt keinen nicht-null falsy Wert, getElementById zurückkehren kann - nur null oder ein always-truthy Element-Objekt bekommen. Es gibt also keinen praktischen Unterschied zwischen !==null, !=null oder dem loser if (document.getElementById('xx')).

+0

Dies sollte die akzeptierte Antwort sein, da der einzige falsche Wert "getElementById" zurückgibt, ist "null", es gibt keinen Grund, nach einem anderen Wert zu suchen, wenn Sie nur nach Existenz suchen möchten. – cowbert