Problema functie

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
MarPlo
Administratorul site-ului
Mesaje: 4343

Problema functie

Salut!
Dupa ce am inteles problema cu neincaracarea elementelor din pagina am incercat sa rezolv astfel:

Cod: Selectaţi tot

    <html>
       <head>
          <title>Countdown Clock</title>
          <script type="text/javascript">
             new Date("yyyy,mm,dd,hh:mm:ss");
             var data=new Date("2010,10,14,6:45:23")
             var d=new Date();
             var sec=data.getSeconds()-d.getSeconds();
             if(sec<0)
             {
                sec=60+sec;
                data.setMinutes(data.getMinutes()-1);
             }
             var min=data.getMinutes()-d.getMinutes();
             if(min<0)
             {
                min=60+min;
                data.setHours(data.getHours()-1);
             }
             var hours=data.getHours()-d.getHours();      
             if(hours<0)
             {
                hours=24+hours;
                data.setDate(data.getDate()-1);
             }      
             var days=data.getDate()-d.getDate();      
             if(days<0)
             {
                days=30+days;
                data.setMonths(data.getMonths()-1);
             }

    onload=function count(days,hour,min,sec)
             {
                if(sec>=0)
                {
                   document.getElementById("seconds").innerHTML=sec + "seconds";
                   sec--;
                }
                else
                   if(min>0)
                   {
                      document.getElementById("seconds").innerHTML='59 seconds';
                      min--;
                      document.getElementById('minutes').innerHTML=minutes + "minutes";
                      sec--;
                   }
                   else
                      if(hours>0)
                         {
                            hours--;
                            document.getElementById('hours').innerHTML=hours + "hours";
                            document.getElementById('minutes').innerHTML='59 minutes';
                            document.getElementById('seconds').innerHTML='59 seconds';      
                            sec--;
                         }
                      else
                         if(days>0)
                         {
                            days--;
                            document.getElementById('days').innerHTML=days + "days";
                            document.getElementById('hours').innerHTML= "23 hours";
                            document.getElementById('minutes').innerHTML='59 minutes';
                            document.getElementById('seconds').innerHTML='59 seconds';   
                            sec--;
                         }
                         else
                         {
                            document.write("Numaratoarea a luat sfarsit!!!");
                            return ;
                         }
                setTimeout("count(days,hours,min,sec)",1000);
             }
          </script>
          <link rel="stylesheet" href="style.css" type="text/css"/>
       </head>
       <body>
          <script type="text/javascript">
          count(days,hours,min,sec);
          </script>
          <div id="clock">
             <div id="days">
                1000 days
             </div>
             <div id="hours">
                23 hours
             </div>
             <div id="minutes">
                56 minutes
             </div>
             <div id="seconds">
                23 seconds
             </div>
          </div>
       </body>
    </html>
Asta este tot fisierul.Acum imi da eroare si imi spune ca functia count nu este definita cand vreau sa o apelez.Se pare ca ceva imi scapa la capitolul functie.
Daca ai timp te rog sa arunci o privire peste cod si sa imi explici ce e gresit.

MarPlo Mesaje: 4343
Intai trebuie definita separat functia: "function nume_f() {... cod }, apoi, daca vrei sa fie executata cu "onload", se foloseste aceasta proprietate: window.onload = nume_f;, la sfarsitul scriptului, dupa restul codului.

bogdan16 Mesaje: 13
daca o declar mai intai apare problema despre care am vorbit in alt topic: imi da null la getelementbyid.
cum ar trebui sa fac sa evit aceste 2 probleme?

bogdan16 Mesaje: 13
Am inteles!
In head declaratia se face fara onload , iar apelarea functiei trebuie sa o fac la final ,dupa ce au fost incarcate toate elementele sau daca vreau neaparat cu onload , declar functia cu tot continutul , apoi pun comanda : window.onload=count(days,hours,min,sec).
Acum a aparut o noua problema: setTimeout("count()",1000) nu da efectul scontat, eu voiam ca functia sa fie recursiva si sa se execute odata pe secunda,dar vad ca nu se intampla asta de ce ? :-?

MarPlo Mesaje: 4343
Incearca "setTimeout()" asa:
setTimeout("count("+ days+ ", "+ hours+ ", "+ min+ ", "+ sec+ ")",1000);
- Mai vezi si tutorialul Utilizare setTimeout() si setInterval()
- Daca nu merge, posibil problema e prin logica scriptului, nu stau sa verific codul pt. asta.

bogdan16 Mesaje: 13
Acum a mers!
Multumesc mult pentru ajutor , si imi cer scuze ca ti-am mancat atata timp. :oops:

Subiecte similare