1

私はjsfiddleの例に従って、javascriptで時間を作成しようとしています:

http://jsfiddle.net/g3rRJ/

明らかに、jsfiddle のタイマーは正常に動作します。しかし、私が抱えている問題は、タイマーが開始する時間が、db から時間を取得する mysqli/php 変数に来ることです。

したがって、次を除きます。

<span id="countdown">01:30:10</span>

私はそれを次のようにする必要があります:

echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";

を除いて:

var time = "01:30:10",

私はそれを次のようにする必要があります:

var time = <?php echo json_encode($dbSessionDuration); ?>,

現在、エラーは発生していませんが、タイマーがカウントダウンを行っていないことが原因です。私の質問は、なぜカウントダウンしないのですか? 変数からの時間の例は、01:00:00.

以下は、関数のコードです。

echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";


...

         <script type="text/javascript">


    (function(){
  $(document).ready(function() {
    var time = <?php echo json_encode($dbSessionDuration); ?>,
      parts = time.split(':'),
      hours = +parts[0],
      minutes = +parts[1],
      seconds = +parts[2],
      span = $('#countdown');

    function correctNum(num) {
      return (num<10)? ("0"+num):num;
    }

    var timer = setInterval(function(){
        seconds--;
        if(seconds == -1) {
            seconds = 59;
            minutes--;

            if(minutes == -1) {
                minutes = 59;
                hours--;

                if(hours==-1) {
                  alert("timer finished");
                  clearInterval(timer);
                  return;
                }
            }
        }
        span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds));
    }, 1000);
  }); 
});

</script>
4

2 に答える 2

1

これがタイプミスかどうかはわかりませんが$(function(){、無名関数の最初の部分に $, , を追加することで、このコードを実行できました。データベースからの値が時間:分:秒として入力されると想定しています。なぜ Fiddler が実行されたのかはわかりませんが、私の環境で動作させるにはそれを追加する必要がありました。

于 2013-02-07T00:16:45.763 に答える
1

これを変える:

  }); 
});

</script>

これに:

  }); 
})();            //  ←  note the extra parentheses

</script>

実際に匿名関数を呼び出すようにします。(あるいは、単純に(function(){and を});完全に削除することもできます。このコードを関数に含める理由はまったくありません。)

于 2013-02-07T00:23:01.017 に答える