2013-03-27 17 views
16

は、私はこれを参照してください?document.getelementbyIdは、要素が定義されていない場合はnullを返しますか? <code>xx</code>要素が定義されていない</p> <pre><code>if (document.getElementById('xx') !=null) { //do stuff } </code></pre> <p>場合、これはtrueまたはfalseに評価されます:私のコードで

は私が書く必要があります:

if (document.getElementById('xx')) 

は安全であると?それは強力な平等のチェックがあるよう

+3

... '指定されたIDを持つ要素がドキュメントにない場合はnull'([mdn](https://developer.mozilla.org/en-US/docs/DOM/document.getElementById)) – raina77ow

+0

'document.getElementById( 'xx')'は 'undefined'を返します –

+0

@KhanhTran実際には' null'を返します。それをコンソールでテストします。 –

答えて

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

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

あなたはdocument.getElementById('xx') !== nullを使用する必要があります。

+1

ありがとうございます。未定義が返ってくるシナリオはありますか? – Victor

+3

console.logのトリックをありがとう。あなたは私たちに魚を教えています。 –

+0

リリース時に 'console.log'sを削除してください! – jay

5

はい、存在しない場合はnullを返します。デモでこれを試すことができます。どちらも真実を返します。最初の要素は存在し、2番目の要素は存在しません。

Demo

Htmlの

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

のJavascript:

​​
8

getElementByIdはない要素が一致しない場合にnullを返すようにDOM Level 1 HTMLによって定義されます。

!==nullはおそらく最も明白なチェックの形、そして最高のですが、getElementByIdを返すことができることは非null falsy値はありません - あなただけnullまたは常時truthy Elementオブジェクトを取得することができます。したがって、!==null!=null、またはよりゆるいif (document.getElementById('xx'))の間に実際的な違いはありません。

+0

唯一の偽りの値 'getElementById'の返り値が' null'なので、これは受け入れられた答えでなければなりません。存在を確認するだけの場合は、他の値をチェックする理由はありません。 – cowbert

関連する問題

 関連する問題