Jesper2Medlem sedan dec. 200475 inlägg Jag har ställt frågan för ganska längesen men fick inget svar, jag kanske inte lämnade tillräckligt med information.. Men iallafall, jag har den här koden:
<script type="text/javascript">
var ds = "2004-10-27 21:40:26";
function f() {
var d = new Date(ds.replace(/-/g,"\/")),
c = new Date(),
hf = (c - d) / 3600000;
ha = Math.floor(hf),
mf = 60 * (hf - ha),
ma = Math.floor(mf);
document.getElementById("time").innerHTML =
ha + " tim " + ma + " min " + Math.floor(60 * (mf - ma)) + " sek";
}
window.setInterval("f()", 960);
</script>
<span id="time"></span>
På min sida för att räkna hur lång tid det har gått sen en viss tidpunkt. Själva tidpunkten är dynamisk, jag har koden i ett PHP-dokument. Det fungerar, fast sekunderna "tickar" inte uppåt, och det står "Fel på sidan" i statusraden.
Vart är felet?
Tack på förhand
MVH,
Jesper Ahlin
RGBMedlem sedan dec. 1999419 inlägg Du försöker skapa ett Date objekt med fel argument, prova med
Date(YYYY, MM, DD, HH, mm, ss ,ms)
de fyra sista argumenten är frivilliga.
dectgapMedlem sedan sep. 20021 655 inlägg Genom att lägga #time före script-elementet förhindrar man att skriptet försöker leta upp ett element som inte finns än:
<span id="time"></span>
<script type="text/javascript">
...
</script>
Vad det gäller skapandet av Date-objektet så måste man inte skriva som RGB föreslår. Date-konstruktorn kan ta flera typer av argument:
http://www.byteshift.de/javascript-1415/CoreReferenceJS15/date.html#1193137
Allra enklast vore det nog att låta PHP skriva ut tiden som ett UNIX timestamp, lägga till tre nollor eftersom JavaScript vill ha tiden i millisekunder istället för sekunder och sköta det hela utanför funktionen.
T ex:
<script type="text/javascript">
var ds = "<?php echo time(); ?>000";
var d = new Date(ds);
function f() {
var c = new Date(),
hf = (c - d) / 3600000;
ha = Math.floor(hf),
mf = 60 * (hf - ha),
ma = Math.floor(mf);
document.getElementById("time").innerHTML =
ha + " tim " + ma + " min " + Math.floor(60 * (mf - ma)) + " sek";
}
window.setInterval("f()", 960);
</script>
Jesper2Medlem sedan dec. 200475 inlägg Jag kan inget JavaScript själv tyvärr :/
Och det fungerade inte som du skrev dectgap.. Så här ser det ut nu:
echo "
<script type=\"text/javascript\">
var ds = \"".$tid1."".$tid2."\";
function getTime() {
var d = new Date(ds.replace(/-/g,\"\/\")),
c = new Date(),
hf = (c - d) / 3600000;
ha = Math.floor(hf),
mf = 60 * (hf - ha),
ma = Math.floor(mf);
document.getElementById(\"time\").innerHTML =
ha + \" tim \" + ma + \" min \" + Math.floor(60 * (mf - ma)) + \" sek\";
}
window.setInterval(\"f()\", 960);
</script>
<span id=\"time\"></span>
";
$tid1 innehåller YYYY-MM-DD
$tid2 innehåller HH:MM:SS
Allt fungerar ju utom att sekunderna inte tickar, och att det står "Sidan innehåller ett fel" i statusraden :/
Jesper2Medlem sedan dec. 200475 inlägg Oj! Nu bytte jag ut namnet mot "f" så tickar sekunderna iallafall. Haha.. Men det är fortfarande "Fel på sidan"
dectgapMedlem sedan sep. 20021 655 inlägg Jag skrev att du skulle lägga span-elementet före script-elementet.
Jesper2Medlem sedan dec. 200475 inlägg
dectgap skrev:
Jag skrev att du skulle lägga span-elementet före script-elementet.
Har provat det, men det gjorde ingen skillnad :/
dectgapMedlem sedan sep. 20021 655 inlägg Visa hela koden (OBS: inte PHP-kod) då.
Eller länka gärna till sidan.
Jesper2Medlem sedan dec. 200475 inlägg
dectgap skrev:
Visa hela koden (OBS: inte PHP-kod) då.
Eller länka gärna till sidan.
Jag har redan visat all väsentlig kod, resten är bara massa PHP-tjafs. Jag kan tyvärr inte visa sidan eftersom det kräver en inloggning.