2009-07-14 14 views
0

私は、タイマーの問題を理解しようとしているjavascriptファイルを見ていますが、私はここで何が起こっているのか正確には分かりません。誰かがこのコードをバイトサイズに分解して、何が起こっているのかを説明できますか?javascript //ここで何が起こっていますか?

Timer=0; 
function countdown(auctionid) { 
    var auctions; 
    var divs; 

    Timer=Timer+1; 

    if((Timer%10=="0")||(Timer=="1")) { 
     $.get("current.php", { 
      id:auctionid 
     }, function(data) { 
      auctions=data.split("||"); 
      for(n=0;n<=auctions.length;n++) { 
       if(auctions[n] != undefined) { 
        divis=auctions[n].split("##"); 
        $('#futu'+divis[0]).html(divis[1]); 
       } 
      } 
     }); 
    } 

    var cauctionid="auctionid"; 
    var tauctions=auctionid.split("|"); 
    for(i=0;i<=tauctions.length;i++) { 
     if(tauctions[i] != undefined) { 
      var dd=$('#futu'+tauctions[i]).text(); 
      var cdd=dd-1; 
      $('#futu'+tauctions[i]).html(cdd); 

      dd=dd*1000; 
      dday=Math.floor(dd/(60*60*1000*24)*1) 
      dhour=Math.floor(dd/(60*60*1000)*1) 
      dmin=Math.floor((dd%(60*60*1000))/(60*1000)*1) 
      dsec=Math.floor(((dd%(60*60*1000))%(60*1000))/1000*1) 

      if(dday==0 && dhour==0 && dmin==0 && dsec==0) { 
       $('#Bid'+tauctions[i]).html("SOLD"); 
       //return 
      } 
      if(dhour <=9) { 
       dhour = "0"+dhour; 
      } 
      if(dmin <=9) { 
       dmin = "0"+dmin; 
      } 
      if(dsec <=9) { 
       dsec = "0"+dsec; 
      } 

      if(dd>=1000) { 
       var valll=dhour+":"+dmin+":"+dsec; 
      } 

      if(dd<1000) { 
       var valll="00:00:00"; 
      } 

      $('#Bid'+tauctions[i]).html(valll); 
     } 
    } 
    refreshID = setTimeout("countdown('"+auctionid+"')", 1000); 
} 
+0

あなたはそれを自分で分解できないのですか? – Natrium

+0

具体的な質問がありますか?ところで、Dreas Grechがあなたのコードを美しく見せてくれたので、それはあなたのために簡単になるでしょう。 – balpha

+0

イムはあまりjavascriptに精通していません。それは数学、日付の時間のもの、そして何が起こっているのかを把握しようとしている最中にタイムアウトで私を失っています。 1000の意味は何ですか。 – mrpatg

答えて

2

毎秒、このスクリプトは、ページ上の各オークションの残り時間を更新します。 setTimeout()の第2引数は、待機する時間をミリ秒単位で表します。したがって、1000 = 1秒です。

また、1秒目と10秒ごとに、ダブルパイプ(||)で区切られた文字列形式のオークションセットを取得するAJAX呼び出しを行います。次に、ページ上の対応するオークションをサーバーからのデータで更新します。

+0

*ほぼ毎秒* setTimeoutはそれほど正確ではなく、実行に時間がかかることもありません。また、このコードでは、Timer変数がタイマーではなくカウンタであることから始めて、何がintリテラルであるべきかの文字列表現に対する論理テストから始めて、多くの問題があります。 – annakata

+0

彼はそれが何をしたのか尋ねたので、私は彼に言った。あなたはそれをすべて知っているようだからあなたの答えはどこですか? – ken

+0

@annakataもちろん、あなたは正しいですが、私は誰でも、そのコードを書いた人は、eBayを再実装しようとしていないと思います。もっと悪い例のコードに似ています。私はあまりにも真剣にそれを取ることはありません... – balpha

関連する問題