Javascript 对调用函数的每个变量进行Null检查?

Javascript 对调用函数的每个变量进行Null检查?,javascript,html,dom,web,Javascript,Html,Dom,Web,我有一个javascript,其中声明了 $(document).ready(function(){ //variables }); 这些变量的值也会被初始化,它们大多是HTML元素。通过document.GetElementById()使用ID确定元素。其中一些元素仅存在于尚未加载到浏览器中的其他页面中。当保存元素的变量用于不同目的时,这会导致空错误 var container_element = document.getElementById('unique-id'); var c

我有一个javascript,其中声明了

$(document).ready(function(){
    //variables
});
这些变量的值也会被初始化,它们大多是HTML元素。通过
document.GetElementById()
使用ID确定元素。其中一些元素仅存在于尚未加载到浏览器中的其他页面中。当保存元素的变量用于不同目的时,这会导致空错误

var container_element = document.getElementById('unique-id');
var count = container_element.getElementsByTagName("div").length;
由于具有“唯一id”的元素出现在另一个未加载到浏览器中的页面中,第二行将返回错误,因为
container\u element
为空。为了解决这个问题,我将代码改为

var container_element = document.getElementById('unique-id');

if(container_element) {
    var count = container_element.getElementsByTagName("div").length;
}

这是处理这种事情的唯一方法吗?我是否必须对通过变量调用的每个函数执行空检查,或者是否有其他解决方案或标准/最佳实践

当您使用
getElementById
时,无论何时元素可能存在或不存在,您都需要这样的保护。如果已显示,则可以使用
,或者

var container_element = document.getElementById('unique-id');
var count = !container_element ? 0 : container_element.getElementsByTagName("div").length;
或类似的

另一种选择是对异常作出反应:

var container_element = document.getElementById('unique-id');
var count;
try {
    count = container_element.getElementsByTagName("div").length;
} catch (e) {
    count = 0;
}

我注意到您正在使用jQuery,但在代码中没有使用它。这太糟糕了,因为如果你是,jQuery基于集合的特性将意味着你不需要保护:

var container_element = $('#unique-id');
var count = container_element.find("div").length;
即使
container\u元素
是一个空集,也可以对其调用方法。大多数jQuery方法都提供了对空集的智能处理。例如,对空集使用
find
,返回一个(新的)空集,如上所述

您仍然可以选择知道元素是否存在(答案中有更多内容):


是的,这是总的想法。如果你不知道你是否有一个实际的元素,你可以检查一个条件。非常感谢你的解释。我将把它合并到我的代码中。
if (container_element[0])
// or
if (container_element.length)