javascript计时器问题

时间:2009-09-02 14:41:58

标签: php javascript timer

我在timer.php中有以下代码。如果我运行文件timer.php,我得到正确的输出如下

time left : 02 min 30 sec

并继续减少。 但是如果使用<? require 'timer.php' ?>将文件timper.php包含在其他文件中,则仅显示time left :,并且不会显示实际的计时器倒计时(在Fire fox中)。但是,如果我运行相同的东西,即它显示为correclty。

有什么问题?我的timer.php有流动的代码。

<script >
    var sec = 00;   // set the seconds
    var min = 02  // set the minutes

    function countDown() {
        sec--;
        if (sec == -01) {
            sec = 59;
            min = min - 1;
        } else {
            min = min;
        }
        if (sec<=9) { sec = "0" + sec; }
        time = (min<=9 ? "0" + min : min) + " min and " + sec + " sec ";
        if (document.getElementById) { theTime.innerHTML = time; }
        SD=window.setTimeout("countDown();", 1000);
        if (min == '00' && sec == '00') { sec = "00"; window.clearTimeout(SD);   }
    }

    function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        } else {
            window.onload = function() {
                if (oldonload) {
                    oldonload();
                }
                func();
            }
        }
    }

    addLoadEvent(function() {
        countDown();
    });

</script>

time left :
<span id="theTime" ></span>

任何人都可以给我一个javascript倒计时器的代码(以分钟为单位),我可以在我的项目中复制pase吗?

5 个答案:

答案 0 :(得分:0)

以防它不是拼写错误或“缩写”:你必须在文件名周围加上引号。

<?php require 'timer.php' ?>

否则php将查找constants timerphp,当它找不到它时,它会将它们解释为两个单独的字符串并连接它们,因为the dot is interpreted as an operator ,导致两个警告(关于缺失的常量)和require 'timerphp'(没有计时器和php之间的点)

答案 1 :(得分:0)

如果此代码JS适合您,则表示window.onload存在问题。

<script >

 var countDown = function(idEl) {
  this.sec = 00;   // set the seconds
  this.min = 02;   // set the minutes
  this.el = idEl;  // set the minutes
  this.SD = null;

  this.timer = function(pthis) {
   pthis.sec--;
   if (pthis.sec == -01) {
    pthis.sec = 59;
    pthis.min = pthis.min - 1;
   } else {
    pthis.min = pthis.min; //??
   }
   if (pthis.sec<=9) { pthis.sec = "0" + pthis.sec; }
   var time = (pthis.min<=9 ? "0" + pthis.min : pthis.min) + " min and " + pthis.sec + " sec ";
   if (document.getElementById) { document.getElementById(pthis.el).innerHTML = time; }
   pthis.SD=window.setTimeout(function(){pthis.timer.apply(pthis, [pthis])}, 1000);
   if (pthis.min == '00' && pthis.sec == '00') { pthis.sec = "00"; window.clearTimeout(pthis.SD); }
  };

  this.timer(this);
 }

</script>

time left : <span id="theTime" ></span>
<script>countDown("theTime")</script>

答案 2 :(得分:0)

这是我的JS倒数计时器版本(仅供参考,我在Firefox中测试了你的版本,它对我来说很好)。

<html>
    <head>
        <title>Timer</title>
        <script type="text/javascript">
            var Timer = {
                // Main method for counting down
                countDown: function (displayID, min, sec, callback) {
                    // Update timer display
                    document.getElementById(displayID).innerHTML = (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;

                    // If there is time left on the timer, continue counting down
                    if (sec > 0 || min > 0) {
                        setTimeout(function () { Timer._countDownCallback(displayID, min, sec, callback); }, 1000);
                    }
                    // When time has run out invoke option callback function
                    else if (typeof callback == "function") {
                        callback();
                    }
                },

                // Internal method for processing remaining time
                _countDownCallback: function (displayID, min, sec, callback) {
                    // Update time left for the timer
                    sec = (sec > 0 ? sec - 1 : 59);
                    if (sec == 59) min = (min > 0 ? min - 1 : 59);

                    // Call main method to update display, etc.
                    Timer.countDown(displayID, min, sec, callback);
                }
            };

            // Start the timer when the page loads
            window.onload = function () {
                Timer.countDown("timerDisplay", 2, 30, function () { alert("The time has come!"); });
            }
        </script>
    </head>
    <body>
        <div>Time left: <span id="timerDisplay"></span></div>
    </body>
</html>

答案 3 :(得分:0)

您可以使用此JavaScript Timer课程。

答案 4 :(得分:0)

timer.php中的javascript很可能无法正常运行,因为在其他文件中包含该文件会导致HTML因某些HTML标记不匹配而中断。或者可能在外部HTML页面中存在另一个错误,该错误会破坏javascript。没有任何更多的细节,很难说你所展示的Javascript代码 - 虽然我不喜欢它并且它有许多问题 - 应该像你想象的那样工作。