Autor Zpráva
jarousek
Profil *
Zdravím, snažím se udělat JS na seznam závodů. Chtěl bych, aby se po splnění datumu závodu, skočilo na další závod. To mi nefunguje, skočí mi to jen na následující, ale dál už ne.


Náhled:

http://lemans.boutiquelaura.cz/



  var aa = new Array ("12H Sebring","Long Beach","Monterey","24h Le Mans 2013","24h Le Mans 2014","Le Mans Classic");
  var bb = new Array ("march 16,2013","april 20,2013","may 11,2013","june 22,2013","june 21,2014","july 4, 2014");
  var cc = new Array ("alms.png","alms.png","alms.png","24hlm2013.png","lmc2013.png","24hlm2014.png");

var nazvy_dni = new Array ("neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota");
var nazvy_mesicu = new Array ("leden","únor","březen","duben","květen","červen","červenec",
                               "srpen","září","říjen","listopad","prosinec");


function vypocet()
  {
 
  var i = 0;
  var den =  24 * 60 * 60 * 1000;  
  
  
  var dnes = new Date ();
  var datum = new Date(bb[i]);    


  var dny = datum.getTime() - dnes.getTime();
  var pocet_dnu = Math.floor(dny/den);


  
  if (pocet_dnu < 0) 
      {
        i++;
      }
  
  
  
  if (pocet_dnu == 0)
     {
        var okruh = document.getElementById("okruh");
        okruh.value = aa[i];
        var datum = document.getElementById("datum");
        datum.value = "tento víkend";
        var denDen = document.getElementById("zbyva");
        denDen.value = pocet_dnu+" dní";
         var zavod_logo = document.getElementById("zavodlogo");
         zavod_logo.style.backgroundImage = "url('images/"+cc[i]+"')";        
        
             
     }
  
  else
      {

         var dnes = new Date ();
         var datum = new Date(bb[i]);     

           var dny = datum.getTime() - dnes.getTime();
           var pocet_dnu = Math.floor(dny/den);
       
       var datum = new Date(bb[i]);
       var hodina = datum.getHours();
       var minuta = datum.getMinutes();
       var sekunda = datum.getSeconds();
       var den = datum.getDate();
       var mesic = datum.getMonth();
       var rok = datum.getFullYear();
       var nazev_dne = nazvy_dni [datum.getDay()];
       var nazev_mesice = nazvy_mesicu [datum.getMonth()];

                  var okruh = document.getElementById("okruh");
           okruh.value = aa[i];
           var datum = document.getElementById("datum");
           datum.value = den+". "+nazev_mesice+" , "+nazev_dne;
           var denDen = document.getElementById("zbyva");
           denDen.value = pocet_dnu+" dní";


         var zavod_logo = document.getElementById("zavodlogo");
         zavod_logo.style.backgroundImage = "url('images/"+cc[i]+"')";

         }

};  
peta
Profil
Na te strance nevim, co hledat.
V kodu nevidim zadny cyklus (for, while), ktery by vyhledaval, porovnaval aktualni datum s daty v poli bb.
Plus ve vlozenych js, css je fura chyb. Ve funkcnosti stranky taky. Pokusil jsem se to vypsat, ale moderator mi to smazal.
jarousek
Profil *
peta:

Zásadní pro výpočet je proměnná i
ta je nastavena i = 0 a změní se pouze na 1 když je proměnná pocet_dnu < 0, takže je potřeba udělat podmínku na správné zvyšování proměnné i
peta
Profil
Dyt ti rikam, ze to mas nejake divne, nemas tam zadny cyklus.
var dnes = new Date ();
for (i=0; i<bb.length; i++)
{
if (new Date(bb[i]) - dnes)>=0) {break;} // jen nevim z hlavy, jestli se rozdil datumu pise zrovna takhle
}
alert([i,aa[i],bb[i],cc[i]]);

"Měly by se procházet jednotlivé datumy, dokud se nenarazí na datum, který je větší než dnešní."
Todle je dulezita veticka. Nemusis mi psat na mail, je tu asi 100 lidi, kteri, kdyz to takhle napises, tak to umi tez vyresit. mail treba mesic nemusim cist :)
Druha dulezita veticka je, kde se to nachazi na strance.
jarousek
Profil *
http://lemans.boutiquelaura.cz/

Ta funkce řeší popis dalšího závodu, je to na levé straně pod otiskem pneumatiky a nad ZAJÍMAVOSTI.


Dle návodu jsem to vložil a vypadáto, že to funguje. Moc děkuji

for (i=0; i < bb.length; i++)
 
   {
  if ((new Date(bb[i]).getTime() - new Date().getTime()) > 0)     {break;}
   } 
pcmanik
Profil
jarousek:
Premennú i nemáš definovanú. Vzniká ti tak globálna premenná.

Zapíš cyklus takto: for (var i = 0, pocet = bb.length; i < pocet; i++)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: