Мой скрипт работает хорошо, но единственная проблема у меня есть.

Я хочу показать счетчик в удобочитаемом стиле, потому что теперь он показывает в миллисекундах

Я хочу, чтобы время осталось 1:02 минуты

Поэтому я хочу отображать оставшееся время в удобочитаемом стиле в браузере, а не в миллисекундах

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<body>

  
  <p>Time left: <span id="timr"></span></p>
  <p id="hpd">Welcome here john</p>
  <p id="shp" style="display:none">Your time is up</p>
<input type="button" value="Hi john" id="btn">
<script>
var SessionTime=100000;
var tickDuration=1000;
var myInterval=setInterval(function(){
    SessionTime=SessionTime-tickDuration
$("#timr").text(SessionTime);
},1000);
var myTimeOut=setTimeout(SessionExpireEvent,SessionTime);
$("input").click(function(){
clearTimeout(myTimeOut);
    SessionTime=100000;
 myTimeOut=setTimeout(SessionExpireEvent,SessionTime);
});

function SessionExpireEvent()
{ clearInterval(myInterval);
    
    $("#btn").attr("disabled", true);
    $("#hpd").hide();
    $("#shp").show();
}
</script>
</body>
</html>
0
Joe Mike 26 Янв 2022 в 15:20

3 ответа

Лучший ответ

Вы можете просто заменить

$("#timr").text(SessionTime);

С участием

$("#timr").text(`${Math.floor(SessionTime/60000)}:${SessionTime/1000%60}`);
0
M. Selim 26 Янв 2022 в 16:13
Спасибо, это было так хорошо и просто, спасибо
 – 
Joe Mike
26 Янв 2022 в 16:32

Похоже, вы хотите что-то вроде этого:

var mins = Math.floor(SessionTime / 1000 / 60);
SessionTime %= 60000;
var secs = SessionTime / 1000;

$("#timr").text(mins + ":" + secs);
0
ControlAltDel 26 Янв 2022 в 15:54
Это не работает, потому что осталось время: 1.6666666666666667:100
 – 
Joe Mike
26 Янв 2022 в 15:46
Я обновил свой ответ
 – 
ControlAltDel
26 Янв 2022 в 15:54
Он показывает Оставшееся время: 1: 100 сейчас, но не считая, было бы хорошо и предоставить полный рабочий код, потому что мой код может отличаться от вашего
 – 
Joe Mike
26 Янв 2022 в 16:11

Проверьте этот ответ => https://stackoverflow.com/a/21294619/11523633

Вы можете скопировать функцию millisToMinutesAndSeconds() в свой скрипт и вызвать ее в myInterval.

Примере:

function millisToMinutesAndSeconds(millis) {
  var minutes = Math.floor(millis / 60000);
  var seconds = ((millis % 60000) / 1000).toFixed(0);
  return seconds == 60
    ? minutes + 1 + ":00"
    : minutes + ":" + (seconds < 10 ? "0" : "") + seconds;
}

var myInterval = setInterval(function () {
  SessionTime = SessionTime - tickDuration;
  $("#timr").text(millisToMinutesAndSeconds(SessionTime));
}, 1000);
0
danylo 26 Янв 2022 в 16:07