| 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: 18 let
|
|||
0