0

背景情報:
呼び出されたときにフォーム内に選択リストを作成して入力する関数があります。その後、スクリプトはリスト内のオプションを実行し、特定の値を探します。値が存在する場合、スクリプトはそのオプションを「選択」します。

問題:
リストは動的に作成され、場合によっては非常に大きくなるため、ロードに時間がかかります。これが発生すると、スクリプトの 2 番目の部分 (オプションを選択する部分) は何も実行しません。これは、選択リストをロードする時間がないためです。

解決策のアイデア:選択リスト
のイベントで関数の 2 番目の部分を (別の関数として) 呼び出すとよいでしょう。しかし、選択リストは属性onloadを持つべきではありません。onloadもう 1 つのアイデアは、単純に遅延を追加することですが、ある日、遅延が十分に長くない場合があります。

4

4 に答える 4

2

AJAX 呼び出しをどのように行っていますか? ほとんどの AJAX ライブラリは、正常終了時にコールバックを行うメカニズムを提供します。たとえば、jQuery では次のようになります。

$("#myList").load("ajax.url", function(){
   //your content has been loaded, so you can do your selection logic here
});

ajax レスポンスを手動で処理し、リストを JavaScript で作成している場合、リストがいつ終了するかを知るコードが既にあるため、別の関数としてではなく、終了したら選択部分を実行できます ( zyemingが示唆したように)。

それでも解決しない場合は、コードを投稿して、人々がより具体的な回答を得ることができるようにすることをお勧めします。

于 2009-06-17T02:20:11.983 に答える
1

遅延の使用は信頼できません。選択リストに入力するために使用しているものは何でも、終了時に関数を直接呼び出す必要があります。

交互に:

選択には「オンロード」イベントがないため、タイムアウト後に自分自身を呼び出す関数を実際に実行できます。選択リスト内の項目の長さがゼロから変更された場合、何かが現在項目 (開始点) を追加していることがわかります。開始点に到達し、次のタイムアウト後に何も変更されていない場合は、アイテムがリストに追加されなくなったと想定できるため、2 番目の関数を実行できます。

于 2009-06-17T01:23:55.730 に答える
0

オプションを選択する関数をコールバック関数にしてみませんか。リストを作成する関数の最後に呼び出されます。例えば

function createList(onComplete) {
// Create the list and maybe other tasks
onComplete();
}

注:このようではないかもしれませんが、あなたは考えを持っていると思います...

于 2009-06-17T01:53:48.103 に答える
0

わかりました、私はついに問題を修正しました。解決策は、ここで説明したものとはまったく異なりました。基本的に、「new Option(value, text)」を使用してオプションをリストに追加していました。私は最終的にifステートメントを投げ込み、必要なものと等しい値が使用されたときに新しいオプション(値、テキスト、真)を使用しました。そしてそれは問題を解決しました。今日の仕事すべて。

于 2009-06-19T02:11:48.820 に答える