2016-01-28 5 views
0

Я пытаюсь создать очень простой таймер обратного отсчета JavaScript, у меня проблема при отображении «минута» со строкой «0», когда она имеет только 1 цифру, она добавляет «0» каждую секунду, а «секунды» «не добавляйте больше« 0 », только один« 0 », когда он отображает 1 цифровую цифру, как мне отображать только одну« 0 »в минуту?Простой JavaScript-таймер

С уважением.

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <title>count down test</title> 
</head> 
<body> 

<p id="demo"></p> 

<script> 
var seconds = 10; //10 sec just to test, originally 60 
var minutes = 5; //10 min just to test, originally 59 
var hour = 1; //can be set to 48 hours for 2days, 72 hours for 3days 

//function to display time 
function count() { 
    if(hour == 0 && minutes == 0 && seconds == 0) { 
     clearInterval(); 
    } 

    //reset seconds when reached 0 
    if(seconds == 0) { 
     seconds = 10; //originally 60 
     minutes--; 
    } 

    if(minutes == 0) { 
     minutes = 10; //originally 59 

     if(hour != 0) { 
      hour--; 
     } 
    } 

    //-1sec every second 
    seconds--; 

    //if less than 10 sec add "string" character 0 to first digit 
    if(seconds < 10) { 
     seconds = "0" + seconds; 
    } 

    //if less than 10 min add "string" character 0 to first digit 
    if(minutes < 10) { 
     minutes = "0" + minutes; 
    } 

    document.getElementById("demo").innerHTML = hour + " : " + minutes + " : " + seconds; 
} 

count(); 

setInterval(function(){ 
    count(); 
}, 1000); 
</script> 
</body> 
</html> 
+0

может у пожалуйста объяснить свой вопрос? –

+0

@salma sultana извините за мой плохой английский, это не мой родной язык:/ Что я пытался сделать здесь, я хотел сделать таймер обратного отсчета. , например 02:59:59 таймер в течение 3 часов // если меньше, чем 10 сек добавить «строку» символ 0 в первой цифре , если (секунды <10) { секунд = «0» + секунд ; } Эта строка кода добавляет строковый символ «0», когда число меньше 10, так как оно будет считаться как 9, 8, 7, 6 и так далее, потому что я хотел отображать время в 2 цифрах, таких как 09, 08, 07 и так далее. моя проблема в том, что будет отображаться как этот 02: 009: 09 02: 0009: 08 02: 00009: 07 и так далее –

+0

жаль выше комментарий трудно читать, так как он не отступа должным образом. –

ответ

1

Когда минутная цифра меньше затем 10, добавив, что строка «0» к типу номера символа оргинала минута и преобразует его в тип строки и его повторение, и почему его добавление 0 снова и снова похоже на строку, которую вам просто нужно выполнить parseFloat(), минута orindal to numeric введите так t js не добавляет нуля как строку снова каждую секунду. Надеюсь, что вы можете проверить код ниже, чтобы снова проверить его.
// вы делаете это // НЕПРАВИЛЬНО СЛУЧАЙ

//if less than 10 sec add "string" character 0 to first digit 
if(seconds < 10) { 
    seconds = "0" + seconds; 
} 

//if less than 10 min add "string" character 0 to first digit 
if(minutes < 10) { 
    minutes = "0" + minutes; 
} 

// DO it like this 
// RIGHT CASE 
//if less than 10 sec add "string" character 0 to first digit 
if(seconds < 10) { 
seconds = "0" + seconds; 
} 

//if less than 10 min add "string" character 0 to first digit 
if(minutes < 10) { 
minutes = "0" + parseFloat(minutes); 
} 
+0

Я неправильно понял вопрос, позвольте мне отредактировать его очень быстро. – WebDudor

+0

@WebDuor спасибо за ваш ответ, извините, что мои объяснения были недостаточно хороши, я получил это право с // если менее 10 минут добавить символ «строка» 0 до первой цифры \t \t if (минуты <10) { \t \t \t // конвертировать минутку в номер \t \t \t minutes = parseInt (минуты); \t \t \t минуты = "0" + минуты; \t \t} тоже, спасибо за подсказку! это вопрос типа данных. Я просто использовал «parseInt()», так как мне не нужно плавающее число :) –

+0

@ Нет проблемы с человеком и использовать все, что работает для вас, либо int, либо плавать вправо?: P нравится человеку счастливое кодирование :), а также выберите это как принятый ответ, так что новые посетители, которые ищут решения с такими же проблемами, могут увидеть и проблему. – WebDudor

0

Не меняйте секунды и минуты переменными, она будет влиять на УСЛОВИЯХ

Я изменил код вашего требования проверить this:

function count() { 
       var placerS,placerM; 
       if(hour == 0 && minutes == 0 && seconds == 0) { 
       clearInterval(); 
       } 

       //reset seconds when reached 0 
       if(seconds == 0) { 
       seconds = 10; //originally 60 
       minutes--; 
       } 

       if(minutes == 0) { 
       minutes = 10; //originally 59 

       if(hour != 0) { 
       hour--; 
       } 
       } 

       //-1sec every second 
       seconds--; 

       //if less than 10 sec add "string" character 0 to first digit 
       if(seconds < 10) { 
       placerS = "0"; 
       }else{ 
       placerS = ''; 
       } 

       //if less than 10 min add "string" character 0 to first digit 
       if(minutes < 10) { 
       placerM = "0"; 
       }else{ 
       placerM = ''; 
       } 

       document.getElementById("demo").innerHTML = hour + " : "+placerM + minutes + " : "+placerS + seconds; 
    } 
+0

Спасибо за ваш ответ! он работает, но мне все еще нужно отредактировать это, чтобы он остановился @ 00:00:00 :) –

0

Вы можете использовать этот код для преобразования минуты:

if(minutes < 10) 
{ 
    var totalmin; 
    var init = 0; 
    var min = parseFloat(minutes); 
    totalmin= init + min; 
    minutes = totalmin.toString(); 
} 
Смежные вопросы