Autor | Zpráva | ||
---|---|---|---|
Watchick Profil * |
#1 · Zasláno: 25. 4. 2008, 06:27:38
Dobrý den, chtěl bych se zeptat, zda-li má mít někde nějakoiu blokaci, když mám php kód který tvoří JS:
<?php $cislo = 1; while ($cislo <= 5) { ?> <script type="text/javascript"> <!-- <?php if ($cislo == "1") $jsvar = $secakce1; if ($cislo == "2") $jsvar = $secakce2; if ($cislo == "3") $jsvar = $secakce3; if ($cislo == "4") $jsvar = $secakce4; if ($cislo == "5") $jsvar = $secakce5; ?> var cil = <?php echo $jsvar; ?>; var hlaska = "Čas už uplynul"; function prvek(jmeno) { var obj=0; // getElementByID - ne-IE prohlizece a nove verze IE if(document.getElementById){ obj = document.getElementById(jmeno); } // document.all - stare verze IE else if (document.all){ obj = document.all[jmeno]; } return obj; } var el = prvek("odpocet<?php echo $cislo; ?>"); function odpocet<?php echo $cislo; ?>(){ var dt = new Date(); var ted = dt.getTime() / 1000; var diff = cil - ted; if(diff <= 0){ el.innerHTML = hlaska; return(0); } var tmp = diff; var d = Math.floor(tmp / 86400); tmp = tmp % 86400; var h = Math.floor(tmp / 3600); tmp = tmp % 3600; var m = Math.floor(tmp / 60); tmp = tmp % 60; var s = Math.floor(tmp); casStr = ""; if(d > 4) casStr = casStr + d + " dní, "; else if(d > 1) casStr = casStr + d + " dny, "; else if(d > 0) casStr = casStr + d + " den, "; if(h < 10) casStr += "0"; casStr = casStr + h + ":"; if(m < 10) casStr += "0"; casStr = casStr + m + ":"; if(s < 10) casStr += "0"; casStr = casStr + "" + s; el.innerHTML = casStr; setTimeout("odpocet<?php echo $cislo; ?>()",995); } if(el){ setTimeout("odpocet<?php echo $cislo; ?>()",1000); } --> </script> <?php $cislo++; } ?> vysledkem cehoz je 5× vypsaný JS kód, ale pokaždý s jiným "var cil = <?php echo $jsvar; ?>;" protože vždy se tam doplňí jiné číslo, mělo by to také po vypsání těchto divů vypsat všech 5 odpočítávání, ne? zatím mi to teda ukazuje pouze jedno... ty divy mám tvořené pomocé php: $sisis = "1"; while (list($id1, $nazevakce1, $x1, $y1, $todivnycislo, $kodaliance1, $secakceall) = mysql_fetch_array($navrat)){ if($sisis == "1")$secakce1 = $secakceall; if($sisis == "2")$secakce2 = $secakceall; if($sisis == "3")$secakce3 = $secakceall; if($sisis == "4")$secakce4 = $secakceall; if($sisis == "5")$secakce5 = $secakceall; echo "<b>$nazevakce1</b>:<br /> Jednotky poslat za:<div id=\"odpocet$sisis\"></div><br />"; $sisis++; } Potřeboval bych poradit, co , nebo jak změnit, aby se odpočítávalo všech těch 5 odpočítávadel, předem děkuji za pomoc |
||
peta Profil |
#2 · Zasláno: 25. 4. 2008, 13:24:42
Watchick
V prvni rade, jsme v JS foru. PHP kod je tu neresitelna zalezitost, to vygeneruje nejaky server uz predtim. "ty divy mám tvořené pomocé php: " To je ono. JS pracuje az na HTML kodu. PHP kod je pro JS neviditelny, kdesi na serveru. Na server se JS nedostane. Za druhe, kdyz neco opakujes s jinym parametrem, bylo by fajn z toho udelat funkci s parametrem. Pak to zavolas jako funkci a nemusis to 10x vypisovat. To myslim tak delas i v PHP, ne? Viz function prvek(jmeno) { tady to s parametrem mas. ... Pak nechapu, proc mas: var el = prvek("odpocet<?php echo $cislo; ?>"); function odpocet<?php echo $cislo; ?>(){ ... el.innerHTML = hlaska; Proc el nepredavas jako parametr, ale definujes to jako globalni promennou? A kdyz uz to davas jako glovalni promennou, proc to nedas do pole a nepredavas parametr cislo=0..10 te funkci. Jinymi slovy, dela se to trosku jinak. JS pekne vypises cele v HEAD a pak se jen odkazujes na prisluusne funkce. Placat to do HTML kodu ti jen komplikuje zivot a prehlednost pri hledani chyb. Za nulte, odkaz na stranku. S pulkou kodu se neda pracovat. Chyba je treba nekde jinde. Klikneme, zobrazi se zmineny HTML kod a vidime, co tam mas za binec. Pripadne ti rekneme radek chyby v tom kodu. jinymi slovy: <head> <script> // ----------------- glob prom ----------------- var timer = []; // ----------------- funkce ----------------- function objekt() {...} function odpocet() {el = objekt('odpocet+'i); ...} function init(max) { for (...<max...) {timer[i] = cas('odpocet('+i+')',1000);} } </script> </head> <body onload="init(<?php echo $pocet; ?>)"> ... DIVY ... </body> Co se tyce PHP kodu, pouzil jsem 1 jedine echo a stranka se ti vygeneruje 10x rychleji. A neopakuji JS kod. Navic mam kazdy casovat c promenne a kdyz bych chtel stopnout, tak staci presunout do null i=3; timer[i] = null; |
||
Watchick Profil * |
#3 · Zasláno: 25. 4. 2008, 13:38:42
co se tyce odkazu na tu stranku, tak ta je jenom pod registraci, takze jsem z toho vyextrahoval to potrebne... odkaz je Tady
ohledne JS je mi úplne jasne, ze takhle se to bude generovat pomaleji, ale s mými (žádnými) zkušenostmi JS jsem rád že mam alespoň toto... A děkuji, že jsi napsal tak vyčerpávající příspěvek, ale s mými znalostmi tomu rozumím jen minimálně... |
||
Watchick Profil * |
#4 · Zasláno: 26. 4. 2008, 06:19:30
Dobře takže jinak: stále nechápu jak mohu docílit aby mi jedeen tenhle script vygeneroval 5 časů, pokud ho nebudu kopírovat... můžete i to prosím ještě trochu upřenit? Díky
|
||
peta Profil |
#5 · Zasláno: 28. 4. 2008, 11:35:46
Watchick
jak bys to udelal v php, abys řx neopakoval tutey funkci_ presne tak se to dela v js. napis, jak bys to udelal v php. |
||
Časová prodleva: 16 let
|
0