Skip to content Skip to sidebar Skip to footer

Why Does My Alarmclock Script Stop Working?

It only works once. At second button click, nothing occurs. If I change budilnik variable at i_budilnik or var budilnik, it doesn't work even once! Where is the problem?

Solution 1:

You call the function wr_hours(); only once... with the onclick budilnik is called, but that doesn't touch wr_hours again. The first time the code is run, because the page is loaded, but after that, with the onclick only the values of min and hour are set again.

edit: you shouldn't call your form "alert", since that's a reserved word in javascript, same for the variable min. also: the variables min and hour are defined in the function budilnik, but they're not known outside this scope. I also renamed the variable budilnik to a global variable justonce to make sure you can check it outside the scope of budilnik. I rewrote your code a bit:

<html><body><div><formname="frm"><inputtype="text"name="hour" /><inputtype="text"name="mins"/><inputtype="button"value="ok"onclick="justonce=1;"></form><fontcolor=#660000size=20face=Tahoma><spanid="hours"></span></font></div></body></html><scripttype="text/javascript">
obj_hours=document.getElementById("hours");
justonce=0;

functionwr_hours()
{
    time=newDate();

    time_min=time.getMinutes();
    time_hours=time.getHours();

    time_wr=((time_hours<10)?"0":"")+time_hours;
    time_wr+=":";
    time_wr+=((time_min<10)?"0":"")+time_min;

    obj_hours.innerHTML=time_wr;

    if (justonce==1 && frm.mins.value==time_min && frm.hour.value==time_hours) {
            alert('welldone');
            justonce=0;
    }
}

setInterval("wr_hours();",1000);
</script>

Your function wr_hours could be a lot shorter by the way:

functionwr_hours()
{
    time=new Date();

    obj_hours.innerHTML=("%02d",time.getHours())+":"+("%02d",time.getMinutes());

    if (justonce==1
        && frm.mins.value==time.getMinutes()
        && frm.hour.value==time.getHours()) {
        alert('welldone');
            justonce=0;
    }
}

Solution 2:

How about this?

You can't hear the"alarm" in this code, so you have to download the sound you like, rewrite a part of the code.

<!DOCTYPE HTMLPUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><METAhttp-equiv="Content-Type"content="text/html; charset=shift_jis"><metahttp-equiv="Content-Style-Type"content="text/css"><metahttp-equiv="Content-Script-Type"content="text/javascript"><bgsoundid="bgm"src="222.mid"loop="-1"><TITLE>Yokai clock~The digital clock changes to the analogue one!?~</TITLE><SCRIPTtype="text/javascript">
<!--

var flg =0;

functiontimeCheck(){

    Now = newDate();
    Hour = Now.getHours();
    Min = Now.getMinutes();
    Sec = Now.getSeconds();

        if(Hour <= 9) { 
                       Hour = "\u0020" + Hour; 
  }        
    if(Min <= 9) { 
                       Min = "0" + Min; 
  }
        if(Sec <= 9) { 
                       Sec = "0" + Sec; 
  }

    document.sampleForm.dspTime.value=Hour + ":" + Min + ":" + Sec;


if((flg == 1)&&(document.sampleForm.alarmH.value == Hour)&&(document.sampleForm.alarmM.value == Min)){
document.getElementById('bgCol').value="333.wav", selectBgm(document.getElementById('bgCol')),
document.getElementById('star_clock').style.visibility="hidden", document.getElementById('clock').style.visibility="visible";
flg=-1; //*One figure other than 0 and 1
  }
}


functionchangeFlg(){
    if(flg == 0){  
    document.sampleForm.setAlarm.value=" alarmOFF ";
                document.getElementById("bgCol").value="";
        selectBgm(document.getElementById('bgCol'));
            flg =1;
    }else{
        document.sampleForm.setAlarm.value=" alarm ON ";
                document.getElementById("bgms").reset();
                selectBgm(document.getElementById('bgCol'));
                document.getElementById('star_clock').style.visibility="visible";
                document.getElementById('clock').style.visibility="hidden";
          flg =0;
    }
}

      setInterval(timeCheck,100);
              window.onload = timeCheck;
//--></SCRIPT><scripttype="text/javascript"><!--
   function selectBgm(e){
    var selectedIndex = e.selectedIndex;
        document.getElementById("bgCol").style.background=e[selectedIndex].style.backgroundColor;
        bgm.src= e[selectedIndex ].value; 
        document.getElementById("bgCol").value=e[selectedIndex].value;
}

 //--></script></head><BODYcolor="gold"bgcolor="black"><divid="clock"style="visibility:hidden"><divid="Od"style="position:absolute;top:0px;left:0px"><divstyle="position:relative"></div></div><divid="Of"style="position:absolute;top:0px;left:0px"><divstyle="position:relative"></div></div><divid="Oh"style="position:absolute;top:0px;left:0px"><divstyle="position:relative"></div></div><divid="Om"style="position:absolute;top:0px;left:0px"><divstyle="position:relative"></div></div><divid="Os"style="position:absolute;top:0px;left:0px"><divstyle="position:relative"></div></div></div><scripttype="text/javascript">

(function(){
    "use strict";

function$(sel)
{
    returndocument.getElementById(sel);
}   

function$$(sel)
{
    if (typeofdocument.getElementsByClassName === 'undefined')
    {
        returndocument.getElementsByName(sel);
    }
    returndocument.getElementsByClassName(sel);
}

var dCol = '00ff00', //date colour.
    sCol = 'ff0000', //seconds colour.
    mCol = '008000', //minutes colour.
    hCol = '008000', //hours colour.
    fCol = '0000ff', //face colorClockHeight = 40,
    ClockWidth = 40,
    ClockFromMouseY = 0,
    ClockFromMouseX = 100,
    d = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    m = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    date = newDate(),
    day = date.getDate(),
    year = date.getYear() + 1900;

varTodaysDate = " " + d[date.getDay()] + " " + day + " " + m[date.getMonth()] + " " + year;
var D = TodaysDate.split('');
var H = '...';
    H = H.split('');
var M = '....';
    M = M.split('');
var S = '.....';
    S = S.split('');
varFace = '1 2 3 4 5 6 7 8 9 10 11 12',
    font = 'Helvetica, Arial, sans-serif',
    size = 1,
    speed = 0.6;
    Face = Face.split(' ');
var n = Face.length;
var a = size * 10;
var ymouse = 0,
    xmouse = 0,
    scrll = 0,
    props = '<span style="font-family:' + font + ';font-size:' + size + 'em; color:#' + fCol + '">',
    props2 = '<span style="font-family:' + font + ';font-size:' + size + 'em; color:#' + dCol + '">';
varSplit = 360 / n;
varDsplit = 360 / D.length;
varHandHeight = ClockHeight / 4.5; 
varHandWidth = ClockWidth / 4.5;
varHandY = -7,
    HandX = -2.5,
    step = 0.06,
    currStep = 0,
    y = [],
    x = [],
    Y = [],
    X = [],
    Dy = [],
    Dx = [],
    DY = [],
    DX = [];
var i;

for (i = 0; i < n; i++) 
{
    y[i] = 0;
    x[i] = 0;
    Y[i] = 0;
    X[i] = 0;
}

for (i = 0; i < D.length; i++) 
{
    Dy[i] = 0;
    Dx[i] = 0;
    DY[i] = 0;
    DX[i] = 0;
}

var wrapper = $('clock');
var html = ''// Date wrapper

html = '';

for (i = 0; i < D.length; i++)
{
    html += '<div class="Date" name="Date" style="position:absolute;top:0px;left:0;height:' + a + ';width:' + a + ';text-align:center">' + props2 + D[i] + '</span></div>';
}

$('Od').children[0].innerHTML = html;
// Face wrapper
html = '';

for (i = 0; i < n; i++) 
{
    html += '<div class="Face" name="Face" style="position:absolute;top:0px;left:0;height:' + a + ';width:' + a + ';text-align:center">' + props + Face[i] + '</span></div>';
}

$('Of').children[0].innerHTML = html;
// Hours wrapper
html = '';

for (i = 0; i < H.length; i++)
{
    html += '<div class="Hours" name="Hours" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:' + hCol + ';text-align:center;font-weight:bold">' + H[i] + '</div>';
} 

$('Oh').children[0].innerHTML = html;
// Minute wrapper

html = '';

for (i = 0; i < M.length; i++)

{

    html += '<div class="Minutes" name="Minutes" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:' + mCol + ';text-align:center;font-weight:bold">' + M[i] + '</div>';

} 

$('Om').children[0].innerHTML = html;



// Seconds wrapper

html = '';

for (i = 0; i < S.length; i++)

{

    html += '<div class="Seconds" name="Seconds" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:' + sCol + ';text-align:center;font-weight:bold">' + S[i] + '</div>';

} 

$('Os').children[0].innerHTML = html;



// Mouse move event handlerfunctionMouse(evnt) 

{

    if (typeof evnt === 'undefined')

    {

        ymouse = event.Y + ClockFromMouseY;

        xmouse = event.X + ClockFromMouseX;

    }
    else
    {
        ymouse = evnt.clientY + ClockFromMouseY;
        xmouse = evnt.clientX + ClockFromMouseX;
    }
}

document.onmousemove = Mouse;

functionClockAndAssign() 

{
    var time = newDate();
    var secs = time.getSeconds();
    var sec = -1.57 + Math.PI * secs / 30;
    var mins = time.getMinutes();
    var min = -1.57 + Math.PI * mins / 30;
    var hr = time.getHours();
    var hrs = -1.575 + Math.PI * hr / 6 + Math.PI * parseInt(time.getMinutes(), 10) / 360;

    $('Od').style.top = window.document.body.scrollTop;
    $('Of').style.top = window.document.body.scrollTop;
    $('Oh').style.top = window.document.body.scrollTop;
    $('Om').style.top = window.document.body.scrollTop;
    $('Os').style.top = window.document.body.scrollTop;

    for (i = 0; i < n; i++)
    {
        var F = $$('Face')[i];
        F.style.top = y[i] + ClockHeight * Math.sin(-1.0471 + i * Split * Math.PI / 180) + scrll;
        F.style.left = x[i] + ClockWidth * Math.cos(-1.0471 + i * Split * Math.PI / 180);
    }

    for (i = 0; i < H.length; i++)
    {
        varHL = $$('Hours')[i];
        HL.style.top = y[i] + HandY + (i * HandHeight) * Math.sin(hrs) + scrll;
        HL.style.left = x[i] + HandX + (i * HandWidth) * Math.cos(hrs);
    }

    for (i = 0; i < M.length; i++)
    {
        varML = $$('Minutes')[i].style;
        ML.top = y[i] + HandY + (i * HandHeight) * Math.sin(min) + scrll;
        ML.left = x[i] + HandX + (i * HandWidth) * Math.cos(min);
    }

    for (i = 0; i < S.length; i++)
    {
        varSL = $$('Seconds')[i].style;
        SL.top = y[i] + HandY + (i * HandHeight) * Math.sin(sec) + scrll;
        SL.left = x[i] + HandX + (i * HandWidth) * Math.cos(sec);
    }

    for (i = 0; i < D.length; i++)
    {
        varDL = $$('Date')[i].style;
        DL.top = Dy[i] + ClockHeight * 1.5 * Math.sin(currStep + i * Dsplit * Math.PI / 180) + scrll;
        DL.left = Dx[i] + ClockWidth * 1.5 * Math.cos(currStep + i * Dsplit * Math.PI / 180);
    }
    currStep -= step;
}

functionDelay() 
{
    scrll = 0;
    Dy[0] = Math.round(DY[0] += ((ymouse) - DY[0]) * speed);
    Dx[0] = Math.round(DX[0] += ((xmouse) - DX[0]) * speed);
    for (i = 1; i < D.length; i++) {
        Dy[i] = Math.round(DY[i] += (Dy[i - 1] - DY[i]) * speed);
        Dx[i] = Math.round(DX[i] += (Dx[i - 1] - DX[i]) * speed);
    }
    y[0] = Math.round(Y[0] += ((ymouse) - Y[0]) * speed);
    x[0] = Math.round(X[0] += ((xmouse) - X[0]) * speed);
    for (i = 1; i < n; i++) {
        y[i] = Math.round(Y[i] += (y[i - 1] - Y[i]) * speed);
        x[i] = Math.round(X[i] += (x[i - 1] - X[i]) * speed);
    }
    ClockAndAssign();
    setTimeout(Delay, 20);
}
Delay();
}());
</script><formid="bgms"style="text-align:right"><SELECTid="bgCol"style="background:#87cefa"; onchange="selectBgm(this);"><OPTIONstyle="background:silver"value="" >STOP</OPTION><OPTIONstyle="background:#87cefa"value="222.mid"selected>CLASSIC</OPTION><OPTIONstyle="background:yellowgreen"value="333.wav">ALARM</OPTION></SELECT></form><FORMNAME="sampleForm"style="text-align:center"><fontid="star_clock"><INPUTid="Alarmy"type="text"STYLE="color:deeppink; background-color:black; font-size:25px; border:none;"size=7NAME="dspTime"></font><br><br><br><br><div><INPUTtype="text"name="alarmH"size=2value="00"><INPUTtype="text"name="alarmM"size=2value="00"><INPUTtype="button"id="setAlarm"name="setAlarm"value=" alarm ON "onClick="changeFlg();">
★
 </div></FORM></BODY></HTML>

Post a Comment for "Why Does My Alarmclock Script Stop Working?"