每当搜索建议可用时创建建议div,并在他们不在时删除。要做到这一点,还需要检查div是否在DOM中。这可以通过两种方式完成。
案例I:
设置全局布尔变量isDivAvailable = false;
,每当我们创建div时,我们都可以设置isDivAvailable = true;
,并在没有可用建议时设置isDivAvailable = false;
。因此,下次在创建div之前检查此标志。
案例II:
通过检查isDivAvailable = document.getElementById("ajaxCreatedDiv");
语句,我们可以判断类似的情况,但这次我们无法创建全局布尔变量,因为它总是返回null,我们也不需要设置isDivAvailable
。
推论:
案例I:
案例II:
优胜者:
案例I:-1,案例II:1 => CASE II
混乱:
哪一个更快?
答案 0 :(得分:1)
哪一个更快?
JavaScript变量非常快(无论范围如何)。所有涉及DOM的东西,特别是评估选择器,都是懒散的。
然而,两者都不是必需的。布尔标志不需要是全局的,它只需要 static - 在使用它的函数之外的范围内。只需保存对(document.getElementById
- 更少)id
的引用即可避免<div>
调用,该引用会重复附加/删除到DOM。你甚至不需要额外的布尔变量,只需测试myDiv.parentNode == null
是否当前是否已分离。