直播时间23:00结束时的Javascript

时间:2018-07-26 20:36:05

标签: javascript if-statement time

我已经尝试了很长一段时间了,无法理解。我有一个显示实时时间的JavaScript。我想做的是建立一个if语句,说如果命中23:00:00,然后打开一个链接。有人可以帮忙吗?我用的任何东西都只是消隐时间:(

<script>
function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
    var t = setTimeout(startTime, 500);
}
function checkTime(i) {
    if (i < 10) {i = "0" + i};
    return i;
}
</script>
</head>
<body onload="startTime()">

<div id="txt"></div>

4 个答案:

答案 0 :(得分:1)

您已经计算出时间,只需检查一下是否是您想要的时间,然后open一个网址即可。

function startTime() {
  var today = new Date('Thu Jul 26 2018 23:00:00 GMT-0700 (Pacific Daylight Time)')

  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  if (h === 23 && m === 0 && s === 0) {
    window.open('https://www.stackoverflow.com', '_blank');
  }
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
  var t = setTimeout(startTime, 500);
}

function checkTime(i) {
  if (i < 10) {
    i = "0" + i
  };
  return i;
}
<body onload="startTime()">

  <div id="txt"></div>
</body>

答案 1 :(得分:1)

简单

...
document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;

if (h == "23" && m == "00" && s == "00") {
  alert("open link from here");
}
...

可以解决问题。

注意:
您还必须检查s,否则每秒将打开一个新页面。

答案 2 :(得分:1)

每秒刷新:

function timeLoop(){

  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  var timeString = h+":"+m+":"+s
  // print time
  document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
  // check timeString
  if ( timeString === "23:00:00"){
    // perform you actions here
  }
}

document.body.onload = function(){
  setInterval( timeLoop, 1000 );
}

这里发生的是

在加载timeLoop函数时,每秒开始循环,每个循环都会更新显示的时间并进行检查。

您可以在if语句旁边执行任何代码或函数。

希望这会有所帮助

答案 3 :(得分:0)

我认为只用一个简单的setInterval()检查小时就可以了。以下代码设置了一个间隔,每1秒检查一次小时。如果小时为23,则会清除间隔,以确保触发的操作仅运行一次,然后执行您想做的任何事情。无需检查分钟和秒,因此您不必担心前导零。

var interval = window.setInterval(function(){
  var h = new Date().getHours();
  if (h === 23) {
    // clear interval to ensure that code runs only once
    window.clearInterval(interval);
    // do whatever you like
    console.log(h);
  }
},1000);