web-dev-qa-db-ja.com

document.getelementbyIdは、要素が定義されていない場合はnullを返しますか?

私のコードでは、これを見ています:

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

xx要素が定義されていない場合、これはtrueまたはfalseに評価されますか?

私は書くべきです:

if (document.getElementById('xx'))

安全であるために?

28
Victor
_console.log(document.getElementById('xx') ) evaluates to null.

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

強力な等価性チェックであるため、document.getElementById('xx') !== nullを使用する必要があります。

64
Garrett

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

_!==null_はチェックの最も明示的な形式であり、おそらく最良ですが、nullが返すことができるgetElementById以外の偽の値はありません-nullのみを取得できますまたは常に真実のElementオブジェクト。したがって、ここでは_!==null_、_!=null_、またはより緩いif (document.getElementById('xx'))の間に実際的な違いはありません。

16
bobince

はい、存在しない場合はnullを返します。デモで以下を試してください。両方ともtrueを返します。最初の要素は存在しますが、2番目の要素は存在しません。

デモ

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
Peter Rasmussen