在Javascript上的特定时间弹出警报框

时间:2013-12-23 22:10:35

标签: javascript

我正在使用Javascript并且我将它设置为在getTime()方法上记录数字,并且它将为此添加一定的毫秒数。然后我想要一个警报框,一旦从1970年1月1日午夜开始经过新的毫秒数就会弹出。

我对编程非常陌生,所以如果你能解释它是如何工作的话会很有帮助。

这可能吗?

1 个答案:

答案 0 :(得分:0)

setTimeout()启动一个进程,每隔x毫秒数异步调用一个函数。 Date()获取当前时间和日期。另外,我添加了一点点来使它成为

修改1

HTML/JavaScript中,您可以将JavaScript嵌入网页中,也可以在页面加载期间解释的单独脚本中嵌入JavaScript。在这里,我们将简单地将其嵌入HTML中。

关于你的问题(如果我理解正确的话),你希望能够记录它的时间,然后告诉它从那时起已经存在了多长时间。在<script>标记中,我们有一个全局变量startTime,它被设置为正在运行的程序的纪元。 Date()得到它的时间。 main()是在我们的页面加载后运行的内容,因此首先要将startTime设置为Date()的当前时间,并启动另一个特殊函数setTimeout()

setTimeout()有两个参数,一个函数引用和一个持续时间。在被调用之后,它会计划在持续时间过去之后被激活的函数。在我们的例子中,我们告诉它在getTimePassage()毫秒之后触发5000

getTimePassage()所做的是通过Date()再次获取当前时间,然后将 时间存储在currDate中。然后我们将timeDiff中的两者之间的差异与调用var timeDiff = (currDate - startTime);存储在一起之后,无论是<div>还是getTimePassage(),都可以输出您想要的任何格式的答案。控制台,警报或弹出窗口。在这里,我们做了所有这些。

最后一个重要的事情是我们如何重新安排 setTimeout()再次使用shouldRestartTimer这样做是为了让我们不断更新在运行期间经过的时间。

修改2

  

但是我该怎么做才能启动和停止计时器?

我在页面中添加了两个按钮,用于启动和停止计时器。您需要添加一个标志startGetTimePassage(),它将告诉函数不要继续重新设置计时器。另外,我重构了main并将启动逻辑分成stopGetTimePassage()main(),分别启动和停止计时器。在程序开始时,startGetTimePassage()设置开始时间并触发start

此外,我在HTML页面中添加了2个按钮和4个复选框,可让您选择显示时间的位置,并允许您停止和启动计时器。当页面加载时,它仍然会启动,但现在您可以在停止后再次启动它。我建议您尝试修复后面的错误:如果计时器已经运行,并按stop几个setTimeouts()将被点燃,这将全部发送到所选输出并按{ {1}}无法解决此问题。

<html>
   <head>
      <title>Timer</title>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width">
      <script>
         // I'm the time of the start of this program
         var startTime;

         // I'm a global variable that holds a handle to the setTimout() object
         var timer;

         // I say whether or not we should keep ticking
         var shouldRestartTimer = true;

         // I get the current time and subtract it from the start time
         function getTimePassage() {
            // I'm the div that is going to print the answer
            var timeDiv = document.getElementById("time");

            // I'm the current time
            var currDate = new Date();

            // I determine how much time has passed
            var timeDiff = (currDate - startTime);

            // I'm the answer to get printed
            var timeString = "Time Passed: " + timeDiff;

            // I put the anser into the HTML after subtracting 
            // the start time from the current time
            if (document.getElementById("shouldDiv").checked) {
               timeDiv.innerHTML = timeString;
            }

            // If I were uncommented I would spawn an alert box
            if (document.getElementById("shouldAlert").checked) {
               alert(timeString);
            }

            // I'm a popup that does what you expect
            if (document.getElementById("shouldPopup").checked) {
               var timeWindow = window.open("", "", "width=200,height=200");
               timeWindow.document.write(timeString);
            }

            // I'm going to tell the same thing to console
            if (document.getElementById("shouldConsole").checked) {
               console.log(timeString);
            }

            // I start this all over again
            timer = setTimeout(getTimePassage, 5000);
         }

         function startGetTimePassage() {
            shouldRestartTimer = true;

            // I make a timer that will run "getTimePassage" every 5000 millis
            timer = setTimeout(getTimePassage, 5000);
         }

         // I stop the timout
         function stopGetTimePassage() {
            shouldRestartTimer = false;
            clearTimeout(timer);
         }

         // I get everything ready
         function main() {
            // I'm setting the time that this all began
            startTime = new Date();

            // I start the timer and tell it to repeat            
            startGetTimePassage();
         }
      </script>
   </head>
   <!--I start the whole process-->
   <body onload="main();">
      <!--I'm a div that is going to store text to not be irritating-->
      <div id="time">Time</div>

      <!--I'm a check box that will make the time go to an alert-->
      <input type="checkbox" id="shouldAlert">Alert<br>
      <!--I'm a pre-selected check box that will make the time go to the div above-->
      <input type="checkbox" id="shouldDiv" checked>Div<br>
      <!--I'm a check box that will make the time to a separate pop-up window-->
      <input type="checkbox" id="shouldPopup">Pop-up<br>
      <!--I'm a check box that will make the time go to the console-->
      <input type="checkbox" id="shouldConsole">Console<br>

      <!--I'm a button to start the timer if you stop it-->
      <button onclick="startGetTimePassage();">Start</button>
      <!--I'm a button to stop a timer after it's started-->
      <button onclick="stopGetTimePassage();">Stop</button>
   </body>
</html>