我正在使用Javascript并且我将它设置为在getTime()方法上记录数字,并且它将为此添加一定的毫秒数。然后我想要一个警报框,一旦从1970年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>