03. februar 2005 - 17:56Der er
9 kommentarer og 1 løsning
Count down med JavaScript og ASP (MANGE POINT)
Hey eksperter...
Jeg skal lige bruge noget hjælp, her er lige noget jeg ikk kan klare... jeg har et count down script, som tæller ned for hvert sek. mit problem er at den skal køre efter serverns tid, og ikke clientens (browserens) tid, det må kunne lade sig gøre..!! mit script ser så ledes ud::
<script> var before="" var current="Auktionen er lukket" var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
function countdown(yr,m,d){ theyear=yr;themonth=m;theday=d var today= new Date() var todayy=today.getYear() if (todayy < 1000) todayy+=1900 var todaym=today.getMonth() var todayd=today.getDate() var todayh=today.getHours() var todaymin=today.getMinutes() var todaysec=today.getSeconds() var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec futurestring=montharray[m-1]+" "+d+", "+yr dd=Date.parse(futurestring)-Date.parse(todaystring) dday=Math.floor(dd/(60*60*1000*24)*1) dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1) dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1) dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1) if(dday<0&&dhour<0&&dmin<0&&dsec<1){ count2.value=current return } else count2.value=dday+ " dage "+dhour+" timer "+dmin+" min. "+dsec+" sek." setTimeout("countdown(theday,themonth,theyear)",1000) } //enter the count down date using the format year/month/day countdown(<%response.write(s_date)%>) </script>
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
<html> <body> <form> <input type="text" name="count" value="" ID="count" size="30"> </form> <script> var count2 = document.getElementById("count"); var today = new Date('<%=now%>'); today.setSeconds(today.getSeconds()-1);
var before="" var current="Auktionen er lukket" var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
function countdown(yr,m,d){ theyear=yr;themonth=m;theday=d today.setSeconds(today.getSeconds()+1); var todayy=today.getYear() if (todayy < 1000) todayy+=1900 var todaym=today.getMonth() var todayd=today.getDate() var todayh=today.getHours() var todaymin=today.getMinutes() var todaysec=today.getSeconds() var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec futurestring=montharray[m-1]+" "+d+", "+yr dd=Date.parse(futurestring)-Date.parse(todaystring) dday=Math.floor(dd/(60*60*1000*24)*1) dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1) dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1) dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1) if(dday<0&&dhour<0&&dmin<0&&dsec<1){ count2.value=current return } else count2.value=dday+ " dage "+dhour+" timer "+dmin+" min. "+dsec+" sek." setTimeout("countdown(theday,themonth,theyear)",1000) } //enter the count down date using the format year/month/day countdown(2005,6,30) </script> </body> </html>
Humm, tjo det virker da..,, men det er lidt underligt,, når jeg sætter serveren 1 dag frem, så tager den 30 dage i scriptet eller så noget... det er i hvert fald mere end 1 dag!
Du kan evt. prøve med: var today = new Date(<%=Year(now)%>,<%=Month(Now)%>,<%=Day(Now)%>,<%=Hour(Now)%>,<%=Minute(Now)%>,<%=Second(Now)%>); (Forskellen er at Javascript så ikke skal parse en dato-streng som kan være formateret forkert pga. forskelligt sprog på server og klient, men har værdier for år, måned, dag, time, minut og sekund direkte).
Grundlæggende er der ofte store forskelle på de forskellige browseres fortolkning af JavaScript. Så det er der ikke en entydig forklaring på.
Men hvis det f.eks. er i FireFox det ikke virker, så har den en meget nyttig JavaScript console hvor du kan se hvor det går galt. Hvis du får det til at virke i både FireFox og IE, har du med stor sandsynlighed dækket omkring 99% af alle brugere. (I og med at Netscape og varianter mere eller mindre bruger samme javascript motor som FF, samt at FF for det meste, i lighed med andre browsere, holder sig til nogle standarder, hvorimod IE indeholder meget Microsoft-specifikt, som ikke findes (eller hedder noget andet) i andre browsere. Så kan du selvfølgelig senere teste i Opera og Safari til Mac, f.eks.
Humm, takk for forklaringen,. jeg tror faktisk det er her det måske går galt, hedder det ikke noget andet i firefox?
document.getElementById
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.