根据我的理解和微小的经验,document.getElementById('element');将返回该元素,如果它存在,否则返回null,如果它不存在。 所以在任何情况下它都不会返回undefined 我想向专家证实这些,因此请向专家社区提问 谢谢
答案 0 :(得分:3)
不,它将始终返回null
或DOM元素。它无法返回undefined
。
请参阅W3C DOM spec:
返回具有给定值的ID属性的
Element
。如果不存在此类元素,则返回null
。
请注意,该规范也说明了这一点:
如果多个元素具有带该值的ID属性,则返回的内容未定义。
这并不意味着它将返回undefined
,它只是意味着当多个元素具有给定ID时调用{em>未定义行为时调用getElementById
。但是,即使在这种情况下,任何实现都不会返回除元素之外的任何内容或null
。
答案 1 :(得分:1)
如上述评论中所述:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Test Page</title>
<script type="text/javascript" id="UN">
//<!--
var a, b, undef;
function testthis()
{ a=document.getElementById("UN");
//COULD now do: b=a.undef;
b=document.getElementById("UN").undef;
//If you set a breakpoint where you can examine b
// its value will be undefined
return;
}
//-->
</script>
</head>
<body onload="testthis();">
test page
</body>
</html>
可以指出,我们正在处理OBJECTS;如果找不到ID(没有对象具有该ID),document.getElementById()
函数将返回null
,并且如果可以找到ID,则返回对象。没有同时具有ID的对象,否则&#34; undefined&#34; - 尽管这个测试代码显示,一个对象可能包含一些未定义的东西(如undef
变量)。