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 に答える