优化ajax创建的div元素

时间:2014-02-14 04:43:13

标签: javascript dom optimization

每当搜索建议可用时创建建议div,并在他们不在时删除。要做到这一点,还需要检查div是否在DOM中。这可以通过两种方式完成。

案例I:

设置全局布尔变量isDivAvailable = false;,每当我们创建div时,我们都可以设置isDivAvailable = true;,并在没有可用建议时设置isDivAvailable = false;。因此,下次在创建div之前检查此标志。

案例II:

通过检查isDivAvailable = document.getElementById("ajaxCreatedDiv");语句,我们可以判断类似的情况,但这次我们无法创建全局布尔变量,因为它总是返回null,我们也不需要设置isDivAvailable

推论:

案例I:

  1. 在全局范围内设置变量。 (-1)
  2. 为了创建div,它会查找全局布尔变量。 (不知道
  3. 无需DOM解析。 (1)
  4. 设置值boolean变量。 (-1)
  5. 案例II:

    1. 未设置为全局范围。 (1)
    2. 为了创建div,它会查找DOM。 (不知道
    3. 对于DOM查找,需要解析。 (-1)
    4. 无需设置变量。 (1)
    5. 优胜者:

      案例I:-1,案例II:1 => CASE II

      混乱:

      哪一个更快?

      1. Javascript' 全局范围变量查找。
      2. HTML DOM解析和重新审核ajaxCreatedDiv

1 个答案:

答案 0 :(得分:1)

  

哪一个更快?

JavaScript变量非常快(无论范围如何)。所有涉及DOM的东西,特别是评估选择器,都是懒散的。

然而,两者都不是必需的。布尔标志不需要是全局的,它只需要 static - 在使用它的函数之外的范围内。只需保存对(document.getElementById - 更少)id的引用即可避免<div>调用,该引用会重复附加/删除到DOM。你甚至不需要额外的布尔变量,只需测试myDiv.parentNode == null是否当前是否已分离。