JQuery/Javascript - Перенаправить на предыдущую страницу, когда обратный отсчет достигнет нуля?

Это мой первый вопрос, и я довольно новичок в JS. Во всяком случае, я нашел этот таймер обратного отсчета на JSFiddle ( http://jsfiddle.net/gPrwW/395/), и мне было интересно, какие изменения необходимо внести, чтобы перенаправить на предыдущую страницу после того, как таймер достигнет нуля? Спасибо за помощь!

$(document).ready(function(e) {
  var $worked = $("#worked");

  function update() {

    var myTime = $worked.html();
    var ss = myTime.split(":");
    var dt = new Date();
    dt.setHours(0);
    dt.setMinutes(ss[0]);
    dt.setSeconds(ss[1]);

    var dt2 = new Date(dt.valueOf() - 1000);
    var temp = dt2.toTimeString().split(" ");
    var ts = temp[0].split(":");

    $worked.html(ts[1] + ":" + ts[2]);
    setTimeout(update, 1000);
  }

  setTimeout(update, 1000);
});

5 ответов

Решение

Попробуйте это:

<html>

<head>
  <script src="https://code.jquery.com/jquery-2.2.3.js" integrity="sha256-laXWtGydpwqJ8JA+X9x2miwmaiKhn8tVmOVEigRNtP4=" crossorigin="anonymous"></script>
  <script>
    $(document).ready(function(e) {
      var $worked = $("#worked");

      function update() {
        var myTime = $worked.html();
        if (myTime == "00:00") {
          window.history.back();
          return;
        }
        var ss = myTime.split(":");
        var dt = new Date();
        dt.setHours(0);
        dt.setMinutes(ss[0]);
        dt.setSeconds(ss[1]);

        var dt2 = new Date(dt.valueOf() - 1000);
        var temp = dt2.toTimeString().split(" ");
        var ts = temp[0].split(":");

        $worked.html(ts[1] + ":" + ts[2]);
        setTimeout(update, 1000);
      }

      setTimeout(update, 1000);
    });
  </script>
</head>

<body>
  <div id="worked">00:10</div>
</body>

</html>

Вы можете использовать это;), вернется на предыдущую страницу.

    function myReturnFunction() {
        setTimeout(function(){ 
           history.go(-1);
        }, 3000);
    };

Как насчет этого?

if (ts.join("") === "000000") {
  alert("Zero!")
  //location.href = "https://www.google.co.jp"
} else {
  $worked.html(ts[1] + ":" + ts[2]);
  setTimeout(update, 1000);
}

Я только что обновил ваш код. Check it out https://jsfiddle.net/gPrwW/397/

Итак, пара замечаний о том, что происходит в коде, который вы разместили. Во-первых, вы используете Date объект. Документация для Date можно найти здесь: ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date). Таким образом, вы можете сделать что-нибудь, где вы проверите ts[0] а также ts[1] равны нулю, но они обе строки, и лично я не люблю проверять такие строки.

Тем не мение, Date имеет два метода под названием getMinutes() а также getSeconds() что оба возвращают числа. Таким образом, вы можете поставить чек, прямо перед инициализацией temp, Это может выглядеть примерно так:

if(dt2.getMinutes() === 0 && dt2.getSeconds() === 0) {
  // do what you want to do at the end of countdown
  return; // return out of the function to stop it from continuing
}

Далее, чтобы перейти на предыдущую страницу, используйте window.history, Если вы хотите перейти на совершенно другую страницу, вы можете использовать window.location, Документация для обоих находится здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window

Я действительно рекомендую взглянуть на документацию, не только потому, что есть другие интересные вещи, которые вы можете сделать, но и вы привыкнете просматривать документацию для ответов. Там много действительно полезной информации.

Другие вопросы по тегам