2011-06-19 17 views
0

問題があります。私はデータベースにクエリを行い、DBから各結果を調べています。 DBには、NameとTimeという2つの列があります。さて、私はjavascriptにしたいのは、データベースに保持されている時間量のNameを表示することです。私はsetTimeout()を使ってこれをしようとしました。setTimeoutが終了するまでjavascriptデータベースクエリを一時停止

DBから選択した後:

function (transaction, result) { 
for (var i = 0; i < result.rows.length; i++) { 
    var row = result.rows.item(i); 
    $('div.box').html(row.name); 
    var countdown; 
    var countdown_number; 
    countdown_init(); 

    function countdown_init() { 
     countdown_number = 11; 
     countdown_trigger(); 
    } 

    function countdown_trigger() { 
     if (countdown_number > 0) { 
      countdown_number--; 
      document.getElementById('countdown_text').innerHTML = countdown_number; 
      if (countdown_number > 0) { 
       countdown = setTimeout('countdown_trigger()', row.time); 
      } 
     } 
    } 

} 

}

さて、ここで私の問題は、私は信じているが、JavaScriptでスレッドをどうする(しかし、私は間違っている可能性があります)。カウントダウンが始まると、ループの実行を一時停止せずに、新しいスレッドでカウントダウンを開始し、ループ内で次のDBエントリを起動し、あらゆる種類のエラーでクラッシュします。

どうすればこの問題を回避できますか?私はフラグを追加することを考えている..しかし、私はこれがどのように動作するか分からない。私は感情を持っています(私が望む)これに直接的な答えがありますが、それが何であるかは分かりません。

+0

ファーストを試してみると、3行目には、[i]はresult.rows.item 'のように、角括弧を必要とします;'。今、あなたはあなたのテキストをどこに置いていますか?いくつかのHTMLマークアップを提供し、あなたがしたいことを記述することはできますか?また、jQueryのようなフレームワークを手にしていますか? – Betamos

答えて

1

あなたは比類のない括弧のを持って、

function (transaction, result) { 
for (var i = 0; i < result.rows.length; i++) { 
    var row = result.rows.item(i); 
    $('div.box').html(row.name); 
    var countdown; 
    var countdown_number; 
    countdown_init(); 

    function countdown_init() { 
     countdown_number = 11; 
     countdown_trigger(); 
    } 

    function countdown_trigger() { 
     if (countdown_number > 0) { 
      countdown_number--; 
      document.getElementById('countdown_text').innerHTML = countdown_number; 
      if (countdown_number > 0) { 
       countdown = setTimeout(function(){countdown_trigger();}, row.time); 
      } 
     } 
    } 

} 
} 
+0

多くのありがとうございます、ごめんなさい申し訳ありませんが、あなたと他のコメント作成者が指摘しているように、私のコード例は非常にうっすらではありませんが、これは修正されますが、setTimeoutの実行中にDBループを一時停止できない – toast

関連する問題