47

私のコードでは、次のように表示されます。

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

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

私は書くべきですか:

if (document.getElementById('xx'))

安全であるために?

4

3 に答える 3

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

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

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

于 2013-03-27T18:07:34.540 に答える
27

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

!==nullは、チェックの最も明示的な形式であり、おそらく最良の形式ですが、null返される可能性のある非偽の値はありません。常に真の Element オブジェクトをgetElementById取得することしかできません。したがって、ここでは、またはより緩い のnull間に実質的な違いはありません。!==null!=nullif (document.getElementById('xx'))

于 2013-03-27T18:11:06.790 に答える
10

はい、存在しない場合は 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!');
于 2013-03-27T18:08:32.447 に答える