如果未定义元素,document.getelementbyId将返回null?

Vic*_*tor 28 javascript domdocument

在我的代码中,我看到了这个:

if (document.getElementById('xx') !=null) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

如果xx未定义元素,这将评估为true还是false?

我应该写:

if (document.getElementById('xx'))
Run Code Online (Sandbox Code Playgroud)

安全吗?

Gar*_*ett 67

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

document.getElementById('xx') !=null evaluates to false
Run Code Online (Sandbox Code Playgroud)

你应该使用document.getElementById('xx') !== null它,因为它是一个更强大的平等检查.

  • 感谢您显示console.log技巧.你教我们钓鱼. (3认同)
  • 谢谢。是否有任何情况下它会返回 undefined? (2认同)

bob*_*nce 18

getElementByIdDOM Level 1 HTML定义,null在没有元素匹配的情况下返回.

!==null是最明确的检查形式,可能是最好的,但没有可以返回的非null虚假值getElementById- 你只能得到null或者总是真实的Element对象.所以这里没有实际的区别!==null,!=null或者更宽松if (document.getElementById('xx')).

  • 这应该是可以接受的答案,因为唯一的假值getElementById返回的是null,如果您只是想检查是否存在,则没有理由检查其他任何值。 (2认同)

Pet*_*sen 8

是的,如果不存在,它将返回null您可以在演示中尝试以下操作.两者都将返回true.第一个元素存在,第二个元素不存在.

演示

HTML

<div id="xx"></div>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

   if (document.getElementById('xx') !=null) 
     console.log('it exists!');

   if (document.getElementById('xxThisisNotAnElementOnThePage') ==null) 
     console.log('does not exist!');
Run Code Online (Sandbox Code Playgroud)