1

我在 jquery $(document).ready 函数中放置了一些 javascript。它在 url 中搜索锚点,然后运行一个单独的函数来显示匹配的内容。

如果我在 if 语句中的某处放置警报,代码就会执行,否则不会运行。我已将所有锚点名称存储在一个名为“anchorNameList”的数组中,并正在检查 URL 中的锚点是否存在。

我只希望函数在初始页面加载时运行,所以我将“currentAnchor”的默认值设置为 1000,并在每次迭代时更改它。

        if (currentAnchor == 1000 && document.location.hash.substring(1)) {
        var checkForThisAnchor = document.location.hash.substring(1);
        for (var j=0; j < anchorNameList.length; j++) {
            if (anchorNameList[j] == checkForThisAnchor) {
                expandMe(j);
            }
        }
    }
4

2 回答 2

0

根据我的经验,当 JavaScript 问题通过在某处添加一个无害的 alert() 神奇地自行修复时,问题的根源通常是异步请求。

在非警报情况下,异步请求尚未完成。但是通过添加警报,它有机会完成,因此允许您的代码在没有完整异步调用响应的情况下运行不同的代码路径。

于 2010-11-12T17:30:07.203 回答
0

我将 onload 事件从 jQuery 的 document.ready 切换到了 window.ready。它大约有 30% 的时间正常工作,所以这绝对是一个时间问题。页面上用于检索列表项的主要 JavaScript 函数似乎运行缓慢。我只是将整个扩展函数移动到列表检索函数的末尾,所以它只是线性运行。

于 2010-11-16T19:20:00.337 回答