Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: JavaScript countdown

jarspa [10.05.2005 08:54:56]

#

Miten saa laskurin laskemaan tunnilleen ja minuutilleen annettuun aikaan? Tämä koodi laskee vaan kuinka kauan siihen annettuun päivään on aikaa...

<script language="JavaScript1.2">
/*
Dynamic countdown Script- © Dynamic Drive (www.dynamicdrive.com)
For full source code, 100's more DHTML scripts, and TOS,
visit http://www.dynamicdrive.com
*/


function setcountdown(theyear,themonth,theday){
yr=theyear;mo=themonth;da=theday
}

//////////CONFIGURE THE COUNTDOWN SCRIPT HERE//////////////////

//STEP 1: Configure the countdown-to date, in the format year, month, day:
setcountdown(2005,05,08)

//STEP 2: Change the two text below to reflect the occasion, and message to display on that occasion, respectively
var occasion="Formula"
var message_on_occasion="Viikonlopun GP käynnissä!"

//STEP 3: Configure the below 5 variables to set the width, height, background color, and text style of the countdown area
var countdownwidth='516px'
var countdownheight='20px'
var countdownbgcolor='#FFFFFF'
var opentags='<font face="Arial" color="red"><small>'
var closetags='</small></font>'

//////////DO NOT EDIT PASS THIS LINE//////////////////

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
var crosscount=''

function start_countdown(){
if (document.layers)
document.countdownnsmain.visibility="show"
else if (document.all||document.getElementById)
crosscount=document.getElementById&&!document.all?document.getElementById("countdownie") : countdownie
countdown()
}

if (document.all||document.getElementById)
document.write('<span id="countdownie" style="width:'+countdownwidth+'; background-color:'+countdownbgcolor+'"></span>')

window.onload=start_countdown


function countdown(){
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[mo-1]+" "+da+", "+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 on day of occasion
if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1&&todayd==da){
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+message_on_occasion+closetags)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+message_on_occasion+closetags
return
}
//if passed day of occasion
else if (dday<=-1){
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+"Viikonlopun GP ohi, odottele tuloksia!"+closetags)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+"Viikonlopun GP ohi, odottele tuloksia!"+closetags
return
}
//else, if not yet
else{
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+"GP:n alkuun: "+dday+ " päivää, "+dhour+" tuntia, "+dmin+" minuuttia, ja "+dsec+" sekuntia"+closetags)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+"Espanjan GP:n alkuun: "+dday+ " päivää, "+dhour+" h, "+dmin+" min, ja "+dsec+" s"+closetags
}
setTimeout("countdown()",1000)
}
</script>

sqwiik [10.05.2005 18:06:06]

#

Tuostahan sen voisi itsekin parseroida käyttäen hieman maalaisjärkeä. Periaatteessa siis otetaan vain kykyinen aika ja verrataan sitä toiseen, ennalta asetettuun aikaan. Nykyisen ajan saat noilla getYear() ym. komennoilla, ja loppupäivämääärä ja -aika sinulla onkin tiedossa.

Ratkaistavana:
1. Päivämäärien/aikojen erotus
2. Eron muuntaminen tulostettavaan muotoon

Kysellä toki voi, mutta valmista koodia ei edelleenkään mielellään tuputeta; on parempi oppia tekemään kakkuja itse kuin syödä valmista, kuivaa kiivikakkua päivästä toiseen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta