infinite loop problem

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • risk32
    New Member
    • Mar 2008
    • 98

    infinite loop problem

    Hello. I tried to create an alarm clock program that would loop until the desired time, then it would open an audio file based upon user choice. The program itself works perfectly... that is, until it reaches the alarm time. Then it loops infinately, trying to open WMP every second. Anyone have a suggestion as to how I can change / fix this issue? The coding is at the bottom, and yes, I code a little differently with my if statements...

    Code:
    <html> 
    <head> 
    <script type="text/javascript">
    function time()
    {
    var date = new Date();  
    var hourNow = date.getHours();  
    var minuteNow = date.getMinutes(); 
    var secondsNow = date.getSeconds();   
    var weekday=new Array(7); 
    weekday[0]="Sunday"; 
    weekday[1]="Monday"; 
    weekday[2]="Tuesday"; 
    weekday[3]="Wednesday"; 
    weekday[4]="Thursday"; 
    weekday[5]="Friday"; 
    weekday[6]="Saturday";
    
    if (secondsNow < 10)
    {
    secondsNow = "0" + secondsNow;   
    } 
    
    document.getElementById("time").value = 'Current time is: ' + weekday[date.getDay()] + ', ' + hourNow + ':' + minuteNow + ':' + secondsNow;
     setTimeout("time()",1000);
    }
    
    function run() 
    { 
    
    var alarmDay = document.getElementById("day").value; 
    var alarmHour = document.getElementById("hour").value; 
    var alarmMinute = document.getElementById("minute").value; 
      
    var date = new Date();   
    var hourNow = date.getHours();   
    var minuteNow = date.getMinutes();  
    var secondsNow = date.getSeconds();
    
     
      
    var weekday=new Array(7);  
    weekday[0]="Sunday";  
    weekday[1]="Monday";  
    weekday[2]="Tuesday";  
    weekday[3]="Wednesday";  
    weekday[4]="Thursday";  
    weekday[5]="Friday";  
    weekday[6]="Saturday"; 
    
    var true1 = 0;
    var true2 = 0;
    var true3 = 0;
    var count = 0;
    var interval;
      
     
    
    
     if (alarmDay == weekday[date.getDay()])
    {  
    true1 = 1;
    }
    
    if (alarmDay != weekday[date.getDay()])
    {
    true1 = 0;
    }
    
    if (alarmHour == hourNow)
    {
    true2 = 1;
    }
    
    if (alarmHour != hourNow)
    {
    true2 = 0;
    }
    
    if (alarmMinute == minuteNow)
    {
    true3 = 1;
    }
    
    if (alarmMinute != minuteNow)
    {
    true3 = 0;
    }
    
    
    
    if ((true1 == 0) || (true2 == 0) || (true3 == 0))
    {
    document.getElementById("alarm").value = "Alarm has been set";
    }
     
    
    
    if ((true1 == 1) && (true2 == 1) && (true3 == 1))
    {
    count = count + 1;
    var path = document.getElementById("path").value;
    window.open(path);
    }
    
    interval = setInterval("run()",1000);
    
    if (count > 1)
    {
    clearInterval(interval);
    }
    }
    </script> 
    </head> 
    <body onload="time();"> 
      
    <table bgcolor="gray" width=300> 
      
    <td><font color="white"> 
    <center> 
    <textarea id="time" style="border:none; overflow:auto"></textarea> 
    <br> 
    Select the day you want the alarm to run.<br> 
    <select id="day"> 
    <option name="sunday" value="Sunday" >Sunday 
    <option name="monday" value="Monday" >Monday 
    <option name="tuesday" value="Tuesday" >Tuesday 
    <option name="wednesday" value="Wednesday" >Wednesday 
    <option name="thursday" value="Thursday" >Thursday 
    <option name="friday" value="Friday" >Friday 
    <option name="saturday" value="Saturday" >Saturday 
    </select> 
    </center> 
      
    <center> 
    Select the time you want the alarm to run.<br> 
      
    <select id="hour"> 
    <option name="00" value="00" >00 
    <option name="01" value="01" >01 
    <option name="02" value="02" >02 
    <option name="03" value="03" >03 
    <option name="04" value="04" >04 
    <option name="05" value="05" >05 
    <option name="06" value="06" >06 
    <option name="07" value="07" >07 
    <option name="08" value="08" >08 
    <option name="09" value="09" >09 
    <option name="10" value="10" >10 
    <option name="11" value="11" >11 
    <option name="12" value="12" >12 
    <option name="13" value="13" >13 
    <option name="14" value="14" >14 
    <option name="15" value="15" >15 
    <option name="16" value="16" >16 
    <option name="17" value="17" >17 
    <option name="18" value="18" >18 
    <option name="19" value="19" >19 
    <option name="20" value="20" >20 
    <option name="21" value="21" >21 
    <option name="22" value="22" >22 
    <option name="23" value="23" >23 
    </select> 
      
    <select id="minute"> 
    <option name="00" value="0" >00 
    <option name="01" value="1" >01 
    <option name="02" value="2" >02 
    <option name="03" value="3" >03 
    <option name="04" value="4" >04 
    <option name="05" value="5" >05 
    <option name="06" value="6" >06 
    <option name="07" value="7" >07 
    <option name="08" value="8" >08 
    <option name="09" value="9" >09 
    <option name="10" value="10" >10 
    <option name="11" value="11" >11 
    <option name="12" value="12" >12 
    <option name="13" value="13" >13 
    <option name="14" value="14" >14 
    <option name="15" value="15" >15 
    <option name="16" value="16" >16 
    <option name="17" value="17" >17 
    <option name="18" value="18" >18 
    <option name="19" value="19" >19 
    <option name="20" value="20" >20 
    <option name="21" value="21" >21 
    <option name="22" value="22" >22 
    <option name="23" value="23" >23 
    <option name="24" value="24" >24 
    <option name="25" value="25" >25 
    <option name="26" value="26" >26 
    <option name="27" value="27" >27 
    <option name="28" value="28" >28 
    <option name="29" value="29" >29 
    <option name="30" value="30" >30 
    <option name="31" value="31" >31 
    <option name="32" value="32" >32 
    <option name="33" value="33" >33 
    <option name="34" value="34" >34 
    <option name="35" value="35" >35 
    <option name="36" value="36" >36 
    <option name="37" value="37" >37 
    <option name="38" value="38" >38 
    <option name="39" value="39" >39 
    <option name="40" value="40" >40 
    <option name="41" value="41" >41 
    <option name="42" value="42" >42 
    <option name="43" value="43" >43 
    <option name="44" value="44" >44 
    <option name="45" value="45" >45 
    <option name="46" value="46" >46 
    <option name="47" value="47" >47 
    <option name="48" value="48" >48 
    <option name="49" value="49" >49 
    <option name="50" value="50" >50 
    <option name="51" value="51" >51 
    <option name="52" value="52" >52 
    <option name="53" value="53" >53 
    <option name="54" value="54" >54 
    <option name="55" value="55" >55 
    <option name="56" value="56" >56 
    <option name="57" value="57" >57 
    <option name="58" value="58" >58 
    <option name="59" value="59" >59 
    </select> 
      
    
    <br> 
      
    Enter the path for the sound file you wish to use<br> 
    
    <input type="file" id="path" style="width:300px;"><br> 
      
    <input type="reset" value="Reset" onclick="javascript: window.location.reload();"> 
    <input type="button" value="Exit" onclick="javascript: window.close();">
    
    <input type="button" value="Run Alarm" onclick="run();"> 
    
    </center> 
    </table>
    <textarea id="alarm" style="border:none; overflow:auto"></textarea> 
    </body> 
    </html>
    Last edited by Dormilich; Oct 8 '09, 07:58 PM. Reason: could you not just check if at least the title is spelled correctly?
  • gits
    Recognized Expert Moderator Expert
    • May 2007
    • 5390

    #2
    since you rerun the function in an interval and initialize the variable count within that function it will never be greater then 1 ... so the condition is always false

    kind regards

    Comment

    • risk32
      New Member
      • Mar 2008
      • 98

      #3
      Originally posted by gits
      since you rerun the function in an interval and initialize the variable count within that function it will never be greater then 1 ... so the condition is always false

      kind regards
      Gits, where would be an effective place to put the count variable? I was thinking maybe before or after the
      Code:
      if ((true1 == 1) && (true2 == 1) && (true3 == 1))
      portion of code, but I'm not sure it would make a difference.

      Comment

      • gits
        Recognized Expert Moderator Expert
        • May 2007
        • 5390

        #4
        the simplest way would be to make it global ... which means that the variable should be declared outside of your function ...

        kind regards

        Comment

        • risk32
          New Member
          • Mar 2008
          • 98

          #5
          Originally posted by gits
          the simplest way would be to make it global ... which means that the variable should be declared outside of your function ...

          kind regards
          So it should look something like this:

          vairable...

          function run()
          {
          ...
          }

          Comment

          • gits
            Recognized Expert Moderator Expert
            • May 2007
            • 5390

            #6
            yepp ... alike this :)

            Comment

            Working...