1

再びお騒がせして申し訳ありません、私はjavascriptに別の問題があります

これは、mysql データベース テーブルからのタイム カウンターのコードです。

<script type='text/javascript'>        
        function cronometru(timp_ramas) {
            Ore = Math.floor(timp_ramas / 3600);
            minute = Math.floor((timp_ramas - Ore * 3600) / 60);
            secunde = timp_ramas - minute * 60 - Ore * 3600;
            if (Ore < 10){ Ore = "0"+ Ore; }
            if (minute < 10){ minute = "0" + minute; }
            if (secunde < 10){ secunde = "0" + secunde; }
            if (timp_ramas > 0) {

                timp_ramas--;
                document.getElementById("timp").innerHTML = Ore + ':' + minute + ':' + secunde;
                //document.getElementById("cumpara").innerHTML ="<br><a href='piata.php?cumpara=<?php echo $id_functie; ?>'>Cumpara</a>";

                setTimeout("cronometru("+timp_ramas+")", 1000);

            } else {
                document.getElementById("timp").innerHTML = "[Licitatia s-a terminat]";
            //  document.getElementById("cumpara").innerHTML = "[Nu mai poti cumpara]";

            }
        }
</script>

次にphpで、このスクリプトをwhile関数で呼び出してテーブル形式にします

while($informatie = mysql_fetch_array($sql))
{   
   $timp_ramas = $informatie['data_limita'] - time();

   //........................................

   echo " <td width='40%' align='justify'>
        Pret : ".$informatie['obiect_pret']." 
        <br />
        Timp ramas : <span id='timp'> "; 

   echo " <script type='text/javascript'> cronometru(".$timp_ramas.") </script></span> ";
   if ($informatie['obiect_cantitate'] > 1) 
       echo "<br>Cantitate disponibila: ".$informatie['obiect_cantitate']." ";
   if ($informatie['data_limita'] > 1) 
       echo "<br><a href='piata.php?cumpara=".$informatie['id']."'>Cumpara</a>";

   echo "</td>";
}

データベースからの情報が異なる3つの行がある場合、最初にjavascriptにのみアクセスする理由がわかりません。他の行は完璧に機能し、データベースからすべての情報を取得しますが、これは各行のタイマー(カウントダウン)を表示したくありません。なんで?

4

1 に答える 1

0

これは、オークション サイト用に書いたコードの一部です。リストされている各アイテムのライブカウントダウンがあります。同じようなものを作っていると思います。コードに目を通し、自由に使用してください。とにかく正しい道を歩むべきです。

function countdown(x,t,b,i) {
var days = Math.floor(t / 60 / 60 / 24);
var hours = Math.floor([t - (days * 86400)] / 60 / 60 );
var minutes = Math.floor([t - (days * 86400) - (hours * 3600)] / 60 );
var seconds = [t - (days * 86400) - (hours * 3600) - (minutes * 60)];
if ( seconds == 1 ){
secondslabel = " Second"}
else {
secondslabel = " Seconds"}
if ( minutes == 1 ){
minuteslabel = " Minute "}
else {
minuteslabel = " Minutes "}
if ( hours == 1 ){
hourslabel = " Hour "}
else {
hourslabel = " Hours "}
if ( days == 1 ){
dayslabel = " Day "}
else {
dayslabel = " Days "}

if ( days == 0 && hours == 0 && minutes == 0){
document.getElementById(x).value=seconds + secondslabel;
document.getElementById(x).style.backgroundColor = '#E19B9B';
}
else if ( days == 0 && hours == 0){
document.getElementById(x).value=minutes + minuteslabel + seconds + secondslabel;
document.getElementById(x).style.backgroundColor = '#E19B9B';
}
else if ( days == 0){
document.getElementById(x).value=hours + hourslabel + minutes + minuteslabel;
document.getElementById(x).style.backgroundColor = '#9BE1A0';
}
else {
if(document.getElementById(x)){
document.getElementById(x).value=days + dayslabel + hours + hourslabel;
document.getElementById(x).style.backgroundColor = '#9BE1A0';
}
}
if ( t < 0 ){
document.getElementById(x).value='Ended';
document.getElementById(x).style.backgroundColor = 'transparent';
document.getElementById(b).value='Ended';
clearInterval (i);
}
}
于 2013-09-10T11:50:29.957 に答える