2013-03-27 15 views
16

W moim kodu, widzę to:document.getelementbyId zwróci wartość null, jeśli element nie jest zdefiniowany?

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

jeśli xx element nie jest zdefiniowany, to ocenia się prawda czy fałsz?

powinienem napisać:

if (document.getElementById('xx')) 

być bezpieczne?

+3

... 'null, jeśli element o podanym ID nie znajduje się w dokumencie' ([mdn] (https://developer.mozilla.org/en-US/docs/DOM/document.getElementById)) – raina77ow

+0

'document.getElementById ('xx')' zwraca 'undefined' –

+0

@KhanhTran W rzeczywistości zwraca' null'. Przetestuj go w konsoli. –

Odpowiedz

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

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

Powinieneś użyć document.getElementById('xx') !== null, ponieważ jest to silniejsza kontrola równości.

+1

Dzięki. Czy jest jakiś scenariusz, w którym powróci on niezdefiniowany? – Victor

+3

Dziękujemy za wyświetlenie sztuczki console.log. Uczysz nas łowić. –

+0

Pamiętaj tylko, aby usunąć 'console.log's po zwolnieniu! – jay

5

Tak, zwróci wartość null, jeśli jej nie ma, możesz to wypróbować poniżej w wersji demo. Obie zwrócą prawdę. Pierwsze elementy istnieją, drugie nie.

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 jest określona DOM Level 1 HTML powrotu null w przypadku, gdy żaden element dopasowane.

!==null jest najbardziej zrozumiałej formie czeku, i chyba najlepszy, ale nie ma nie- null wartość falsy że getElementById może wrócić - można dostać tylko null lub zawsze truthy obiekt Element. Więc nie ma praktycznej różnicy między !==null, !=null lub luźniejszym if (document.getElementById('xx')).

+0

Powinna to być zaakceptowana odpowiedź, ponieważ jedyną wartością zwracaną przez 'getElementById' jest' null', nie ma powodu do sprawdzania jakiejkolwiek innej wartości, jeśli chcesz tylko sprawdzić istnienie. – cowbert

Powiązane problemy