【问题标题】:Clear all script-set variables easily (Javascript/jQuery)轻松清除所有脚本集变量(Javascript/jQuery)
【发布时间】:2010-12-26 04:15:10
【问题描述】:

我正在尝试找到一种简单的方法来重置 DOM 中的所有当前变量。我的应用处于“锁定”状态,但目前,如果您使用 Firebug 来查看,则在锁定时,最后一组信息仍然在 DOM 中可见。

我知道所有变量的所有名称,但我不想有一个非常繁琐的脚本,包括所有变量(大约有 300 个),我在其中明确清除它们的值。

有人知道是否有办法“清除”所有设置变量的 DOM 吗?

如果这是一个愚蠢的问题,请提前道歉,并感谢您的任何回复。我的应用广泛使用 jQuery,但我所有的 Javascript/jQuery 搜索都是空白。

【问题讨论】:

  • 你为什么不想这样做? “锁定”状态是什么意思?
  • 您是否将变量作为属性附加到 DOM 元素? DOM 本身没有变量,回答者似乎对您需要清除的内容感到困惑。

标签: javascript dom variables reset


【解决方案1】:

假设您将变量作为属性附加到 DOM 元素(应注意不要创建循环引用并触发 IE 内存泄漏;请参阅:crockford article)。

在有关泄漏的文章中,Crockford 先生提供了一个从所有 DOM 元素中清除函数引用的函数,这与您需要的类似:

function purge(d) {
    var a = d.attributes, i, l, n;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            n = a[i].name;
            if (typeof d[n] === 'function') {
                d[n] = null;
            }
        }
    }
    a = d.childNodes;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            purge(d.childNodes[i]);
        }
    }
}

他在哪里

if (typeof d[n] === 'function') {

替换为检查您的自定义属性/属性的逻辑(如果您使用许多不同的属性,请在数组中方便地保留一个列表,并确保您的属性名称没有与 src、标题等标准属性冲突.)

【讨论】:

    【解决方案2】:

    与其用全局变量使 DOM 变得混乱,不如尝试在它们周围放置一个范围(使用函数)。

    在这里更好地解释:http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

    【讨论】:

      【解决方案3】:

      每个全局范围变量或函数实际上是在当前窗口中定义的。您可以枚举对象的成员 (see this post)。如果您可以分离用户定义的变量,那么您就拥有了所需的一切。也许您可以定义一个空窗口并比较这些变量。见下文

      var a=5
      
      alert(window.a); //OR
      alert(window["a"]);
      

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多