0

リストの要素を表示したいのですが、リストカウンターのインクリメントに問題があります。増分は 1 回だけです。

ここにJavaScriptの私の関数コードがあります

var element= document.getElementById("question");
        timeTotal =timeTotal -1;
        var nextQuestNumber = <%=k%>;
        var nbQuestion = <%=iter%>;
      if (timeTotal <= 0 && nextQuestNumber>0 && nextQuestNumber<nbQuestion)
      {
          timeTotal=<%=a%>;
         element.innerHTML = '<c:out value="<%=listQuestions.get(k).getQuestion()%>"/>';
         <%=k++%>;
      }

      setTimeout("listIter()", 1000);

kはゼロに初期化されたカウンター、iterはリスト サイズ、timeTotal は合計時間 (1 分) を減算する変数です。したがって、毎分、リストの次の要素を取得して表示したいと考えています。

したがって、この関数をロードするために、次のようにしました。

<body onload="listIter()">

そして、この関数を毎秒繰り返すために、関数内でこれを行いました:

setTimeout("listIter()", 1000);

しかし、残念ながら、これは私にはうまくいきません。それについて教えてください。

4

3 に答える 3

0

これを直接行うことはできません。

最初にリスト全体をクライアント側のコードに渡し、次にkクライアント側でクライアント側の配列から適切な項目を読み取るか、AJAX を使用してサーバーから適切な項目を読み取ります。

さらに、停止条件がないため、関数が際限なく実行され続けるため、お勧めできません。終了したら、関数を再度呼び出さないでください。

于 2012-12-16T15:01:24.257 に答える
0

<% .. %>またはのような jsp 式<c:out .. />はサーバー側で評価され、javascript コードはクライアント側で実行されます。サーバー側で何がレンダリングされているかを確認するには、ブラウザの JavaScript コードを確認する必要があります。

于 2012-12-16T15:03:09.190 に答える
0

プログラムの次の問題:

setTimeout("listIter()", 1000);

setTimeout(listIter, 1000);

<%=k++%>;

nextQuestNumber++;

timeTotal=<%=a%>;

実行ごとにリセットされるため、プログラム内の他の変数で受け取ります。

于 2012-12-16T15:06:16.337 に答える