缺少元素中断脚本(getElementById)

时间:2012-07-31 00:28:40

标签: javascript

如果ID不存在,则脚本会中断。为什么呢?

如何挑战the_lis?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
<script>
window.onload = function(){
alert('this will alert');
var the_id = document.getElementById('a_id_that_does_not_exist'),
the_lis = the_id.getElementsByTagName('li');
alert('this will NOT alert');
}
</script>
</body>
</html>

4 个答案:

答案 0 :(得分:1)

由于第一个元素不存在,the_id将为null。在getElementsByTagName上调用方法null将导致错误。

答案 1 :(得分:0)

你真的应该首先使用the_id语句检查if是否存在,否则将抛出异常。

window.onload = function(){
alert('this will alert');
var the_id = document.getElementById('a_id_that_does_not_exist');
if (the_id != undefined)
    the_lis = the_id.getElementsByTagName('li');
alert('this will NOT alert');
}

答案 2 :(得分:0)

the_id为空,null没有getElementsByTagName方法。咄。

在编写代码之前确保ID存在,或者使用以下内容明确检查:

var the_lis = the_id ? the_id.getElementsByTagName('li') : [];

答案 3 :(得分:0)

根据我的理解,getElementsByTagName返回一个数组。但是在此之前,the_id应为null或未定义,因为它不存在,因此您尝试在空实例上调用getElementsByTagName。

我建议(除非不适用)使用jquery做任何你想做的事情,并使用firebug调试你的JavaScript