16. maj 2010 - 00:08Der er
9 kommentarer og 1 løsning
Hjælp til en countdown timer
Hej,
Jeg skal ha lavet en countdown timer, ala dem man ser på auktions sider.
Hvordan mener i jeg skal gribe det an?
pt. har jeg fundet et javascript hvor jeg kan bind targetdate, og det fungere sådan set ok. Bortset fra at når jeg indsætter mit script i den DataList jeg bruger til at vise mine produkter, bliver timeren kun vist ved 1 produkt, i stedet for alle produkterne.
Jeg antager at du bruger asp, .net eller php til at sprøjte produkterne ud fra et recordset rækkevis eller sådan noget og at der sikkert er et unikt id for hvert produkt.
Du har en funktion:
function FormatTime(p_seconds) { // Her skal defineres et eller andet format inden tiden returneres, men hvad?? return p_seconds; }
function RunTimer(p_id, p_seconds) { if (document.getElemnetById(p_id)) { var rt = document.getElemnetById(p_id); if (p_seconds > 0) { p_seconds -= 1; rt.innerHTML = FormatTime(p_seconds); setTimeout("RunTimer('" + p_id + "', " + p_seconds + ")", 1000); } } }
For hvert produkt id laver du en div med et inline script.
Jeg kom til at tænke på hvis det er en side med flere hundrede produkter, så kan alle de tråde nok gå i ged, så her et andet forslag baseret på en fast dato:
<script type='javascript'>
var regdate = /(\d+)[\/|\-](\d+)[\/|\-](\d+)\s(\d+)\:(\d+)\:(\d+)/i;
function CDate2(p_date) { var arr_date = regdate.exec(p_date); var new_date = new Date(arr_date[3], arr_date[2] - 1, arr_date[1], arr_date[4], arr_date[5], arr_date[6]); return new_date; }
function FormatTime(p_seconds) { p_seconds = Math.floor(p_seconds / 1000);
var d = Math.floor(p_seconds / 86400); p_seconds -= (d * 86400);
var h = p_seconds % 86400; h = Math.floor(h / 3600); p_seconds -= h * 3600;
var m = p_seconds % 3600; m = Math.floor(m / 60); p_seconds -= (m * 60);
var s = p_seconds % 60;
return d + "d " + h + "t " + m + "m " + s + "s"; }
function RunTimer(p_id, p_datetime) { if (document.getElementById(p_id)) { var rt = document.getElementById(p_id); var now = new Date(); var then = CDate2(p_datetime); if (now < then) { rt.innerHTML = FormatTime(then - now); setTimeout("RunTimer('" + p_id + "', '" + p_datetime + "')", 1000); } else { rt.innerHTML = "Tid udløbet"; } } } </script>
html.. funktionen tager to parametre id for produktet og en slutdato.
Jeg har prøvet mig lidt frem med din kode. Umiddelbart er problemet det samme. Eftersom jeg bruger DataList til at vise mine produkter, så skulle datalisten gerne vælge det næste ID hver gang jeg indsætter et nyt produkt.
Min function forventer at få en udløbsdato der skal tælles ned til i et format svarende til: 16-05-2010 12:00:00 er det også det som din Timer værdi returner?
Hvis jeg nu vil ha mit produkt fjernet når tiden er udløbet. Hvordan ville du gøre det?
Har prøvet mig lidt frem, men ikke fundet en løsning endnu.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.