2015-02-15 2 views
0

Попытка сделать сообщение, когда время дошло до 0 и в течение нескольких часов, так как неделя содержит 594000 секунд, мне бы хотелось, чтобы сообщение «пришло время для пива» отображается, когда var «secs» больше, чем 594000 секунд (так что он покажет сообщение с 4PM в пятницу до 7PM в качестве сброса счетчика при 4PM, а секунды будут находиться между 604800 и 594000 сек.Обратный отсчет Javascript отсутствует, когда он достигнет нуля

Функция, которую я создал ALERTB не кажется, чтобы показать сообщение. Я новичок в JavaScript, пытался искать и нуждаются в помощи, если это возможно, вероятно, делает простую ошибку ...

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<link href='http://fonts.googleapis.com/css?family=Chewy' rel='stylesheet' type='text/css'> 
<link href="css/bootstrap.min.css" rel="stylesheet"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 

<script type = "text/javascript"> 

var cday; 
var timeInSecs; 
var ticker; 

function getSeconds() { 
    var now = new Date(); 
    var nowtime = now.getTime(); // time now in milliseconds 
    var countdowntime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 16, 0, 0); // 16 hrs = 4 pm 
    // countdowntime - change time hh,mm,ss to whatever time required, e.g. 7,50,0 (0750) 

    var dy = 5; // Friday (day 5) - change for other days 0-6 
    var atime = countdowntime.getTime(); 
    var diff = parseInt((atime - nowtime)/1000); // positive if date is in future 
    if (diff > 0) { 
     cday = dy - now.getDay(); 
    } else { 
     cday = dy - now.getDay() - 1; 
    } 
    if (cday < 0) { 
     cday += 7; 
    } // aleady passed countdown time, so go for next week 
    if (diff <= 0) { 
     diff += (86400 * 7) 
    } 
    startTimer(diff); 
} 



function startTimer(secs) { 
    timeInSecs = parseInt(secs); 
    ticker = setInterval("tick()", 1000); 
    tick(); // to start counter display right away 
} 

function alertb() { // PROBLEMATIC, DOESN'T SHOW 
    var secs = timeInSecs; 
    while (secs > 0) {} 
    document.getElementById("hb").innerHTML = "it's beer time !!!"; 
} 

function tick() { 
    var secs = timeInSecs; 
    if (secs > 0) { 
     timeInSecs--; 
    } else { 
     clearInterval(ticker); // stop counting at zero 
     getSeconds(); // and start all over again! 
    } 

    var days = Math.floor(secs/86400); 
    secs %= 86400; 
    var hours = Math.floor(secs/3600); 
    secs %= 3600; 
    var mins = Math.floor(secs/60); 
    secs %= 60; 
    var result = "Time remaining " + cday + ' day(s) '; 
    result += ((hours < 10) ? "0" : "") + hours + " hours " + ((mins < 10) ? "0" : "") + mins + " minutes " + ((secs < 10) ? "0" : "") + secs + " seconds"; 
    document.getElementById("countdown").innerHTML = result; 
} 



</script> 
</head> 

<body onload = "getSeconds()"> 
<div id="maindiv" class="col-lg-6 col-lg-offset-3"> 
    <div id="title-countdown"> 
     <span class="bchewy col-lg-12" id="title">It's time for beer in ...</span> 
    </div> 
    <div id="container-countown"> 
     <span id="countdown" class="schewy col-lg-12"> </span> 
     <span id="hourb" class="rchewy col-lg-12"> </span> 
    </div> 
</div> 
</body> 
</html> 
+0

WTH Вы включаете jQuery, если вы его не используете? Кроме того, вы, кажется, не включили плагин [tag: jquery-countdown] вообще? – Bergi

+1

Ваша функция 'alertb()' никогда не вызывается, поэтому ничего не будет делать? – Bergi

ответ

0

Ваш Функция alertb() ничего не делает - она ​​входит в цикл while while (secs>0), но затем никогда не меняет значение в секундах. Таким образом, это будет продолжаться, пока секунды не изменятся, навсегда, никогда не выходя из цикла.

 Смежные вопросы

  • Нет связанных вопросов^_^