问题
In my code, I see this:
if (document.getElementById('xx') !=null) {
//do stuff
}
if xx
element is not defined, will this evaluate to true or false?
Should I write:
if (document.getElementById('xx'))
to be safe?
回答1:
console.log(document.getElementById('xx') ) evaluates to null.
document.getElementById('xx') !=null evaluates to false
You should use document.getElementById('xx') !== null
as it is a stronger equality check.
回答2:
getElementById
is defined by DOM Level 1 HTML to return null
in the case no element is matched.
!==null
is the most explicit form of the check, and probably the best, but there is no non-null
falsy value that getElementById
can return - you can only get null
or an always-truthy Element object. So there's no practical difference here between !==null
, !=null
or the looser if (document.getElementById('xx'))
.
回答3:
Yes it will return null if it's not present you can try this below in the demo. Both will return true. The first elements exists the second doesn't.
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!');
来源:https://stackoverflow.com/questions/15666163/document-getelementbyid-will-return-null-if-element-is-not-defined