2013-03-27 16 views
16

, bunu görüyor musunuz?document.getelementbyId null döndürecek? <code>xx</code> eleman tanımlı değil</p> <pre><code>if (document.getElementById('xx') !=null) { //do stuff } </code></pre> <p>, bu doğru veya yanlış olarak değerlendirir: Benim kod

Ben yazsak:

if (document.getElementById('xx')) 

güvenli olması için?

+3

... Belirtilen kimliğe sahip bir öğe belgede bulunmuyorsa null ([mdn] (https://developer.mozilla.org/en-US/docs/DOM/document.getElementById)) – raina77ow

+0

'document.getElementById ('xx')' 'undefined' döndürecektir –

+0

@KhanhTran Aslında' null' döndürür. Konsolda test edin. –

cevap

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

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

Daha güçlü bir eşitlik denetimi olduğundan, document.getElementById('xx') !== null kullanmalısınız.

+1

Teşekkürler. Undefined dönecek herhangi bir senaryo var mı? – Victor

+3

console.log numarasını gösterdiğiniz için teşekkür ederiz. Bizi balık tutmayı öğretiyorsun. –

+0

Sadece bıraktığınızda 'console.log'ları kaldırmayı unutmayın! – jay

5

Evet, eğer mevcut değilse boş dönecektir, bunu aşağıdaki demoda deneyebilirsiniz. Her ikisi de gerçek olacak. İlk unsurlar ikinci değil var.

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 hiçbir eleman eşleşti durumunda null dönmek için DOM Level 1 HTML tarafından tanımlanır.

!==null muhtemelen en açık çek formu ve en iyi olduğunu, ancak getElementById dönebilmek hiçbir olmayan null falsy değer yoktur - sadece null veya her zaman truthy Eleman nesneyi elde edebilirsiniz. Yani burada !==null, !=null veya gevşeyici if (document.getElementById('xx')) arasında pratik bir fark yoktur.

+0

Bu get cevabı, getElementById döndüren tek falsey değeri "null" olduğundan, yalnızca varlığı kontrol etmek istediğinizde başka bir değeri kontrol etmek için bir neden olmadığı için kabul edilen yanıt olmalıdır. – cowbert

İlgili konular