Avatar billede spacee Nybegynder
14. april 2005 - 04:16 Der er 17 kommentarer og
2 løsninger

Roterer pics baseret paa hvilken dag.

Jeg har ikke kunne finde et javascript som goer hvad jeg har brug for saa derfor skriver jeg herinde..

Jeg har brug for et script som kan roterer 4 billeder hver dag.

Jeg har 7 billeder kaldet:

Mandag.jpg
Tirsdag.jpg
Onsdag.jpg
Torsdag.jpg
Fredag.jpg
Loerdag.jpg
Soendag.jpg

Jeg oensker at bruge 4 af de billeder hver dag. Lad os sige at det er torsdag. Saa skulle foelgende 4 billeder bruges den dag

Torsdag.jpg
Onsdag.jpg
Tirsdag.jpg
Mandag.jpg

I morgen naar det er Fredag saa skal disse 4 billeder benyttes.

Fredag.jpg
Torsdag.jpg
Onsdag.jpg
Tirsdag.jpg

Det vil sige, altid billedet som svarer til i dags dag og de 3 foregaarende dage.

Haaber der er en som har lyst til at hjaelpe, jeg ved det sikkert er en del arbejde saa derfor nogle gode points.

Paa forhaand tak!
Avatar billede busschou Praktikant
14. april 2005 - 07:42 #1
Måske du kan arbejde ud fra noget ala:
-----------------------
<script LANGUAGE="Javascript">
<!--//
function init(){
    var dato=new Date()
    var mandag = new Array("Fredag.jpg","Lørdag.jpg","Søndag.jpg","Mandag.jpg")
    var tirsdag = new Array("Lørdag.jpg","Søndag.jpg","Mandag.jpg","Tirsdag.jpg")
    var onsdag = new Array("Søndag.jpg","Mandag.jpg","Tirsdag.jpg","Onsdag.jpg")
    var torsdag = new Array("Mandag.jpg","Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg")
    var fredag = new Array("Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg","Fredag.jpg")
    var lørdag = new Array("Onsdag.jpg","Torsdag.jpg","Fredag.jpg","Lørdag.jpg")
    var søndag = new Array("Tordag.jpg","Fredag.jpg","Lørdag.jpg","Søndag.jpg")
    var dag=dato.getDay()
    switch (dag){
        case 0:
            skift(søndag,3)
        break
        case 1:
            skift(mandag,3)
        break
        case 2:
            skift(tirsdag,3)
        break
        case 3:
            skift(onsdag,3)
        break
        case 4:
            skift(torsdag,3)
        break
        case 5:
            skift(fredag,3)
        break
        case 6:
            skift(lørdag,3)
        break
    }
}

function skift(billeder,nummer){
    var billede = document.getElementById('dit_id')
    billede.src = billeder(nummer)
    if(nummer==0){
        setTimeout("skift(billeder,3)",10000)
    }else{
        setTimeout("skift(billeder,nummer-1)",10000)
    }
}
-->
Avatar billede spacee Nybegynder
14. april 2005 - 08:30 #2
Hvad kode skal jeg saette ind hvor de 4 billeder skal vaerer? (hvordan skal linket se ud for at de kan roterer)
Avatar billede busschou Praktikant
14. april 2005 - 08:36 #3
I din body laver du en onload="init()"
Der hvor billedet skal være laver du dit billede helt normalt med <img> tagget og src.
Du skal blot give tagget et id som skal svare til id´et i funktionen skift
Alle arrays med ugedagene i skal du lave så de indeholder den fulde sti til mandag.jpg, tirsdag.jpg osv
Billederne burde så skifte automatisk eftersom funktionen skift kalder sig selv med 10sek mellemrum
De "ruller" godt nok ikke så det var mest til inspiration
Avatar billede spacee Nybegynder
14. april 2005 - 08:50 #4
Kan jeg faa dig til at vise hvordan det skal saettes op i denne model? -- Beklager men jeg er ikke ret staerk i kodning :(

<HTML>
<HEAD>
<TITLE>Test</TITLE>

<script LANGUAGE="Javascript">
<!--//
function init(){
    var dato=new Date()
    var mandag = new Array("Fredag.jpg","Lørdag.jpg","Søndag.jpg","Mandag.jpg")
    var tirsdag = new Array("Lørdag.jpg","Søndag.jpg","Mandag.jpg","Tirsdag.jpg")
    var onsdag = new Array("Søndag.jpg","Mandag.jpg","Tirsdag.jpg","Onsdag.jpg")
    var torsdag = new Array("Mandag.jpg","Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg")
    var fredag = new Array("Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg","Fredag.jpg")
    var lørdag = new Array("Onsdag.jpg","Torsdag.jpg","Fredag.jpg","Lørdag.jpg")
    var søndag = new Array("Tordag.jpg","Fredag.jpg","Lørdag.jpg","Søndag.jpg")
    var dag=dato.getDay()
    switch (dag){
        case 0:
            skift(søndag,3)
        break
        case 1:
            skift(mandag,3)
        break
        case 2:
            skift(tirsdag,3)
        break
        case 3:
            skift(onsdag,3)
        break
        case 4:
            skift(torsdag,3)
        break
        case 5:
            skift(fredag,3)
        break
        case 6:
            skift(lørdag,3)
        break
    }
}

function skift(billeder,nummer){
    var billede = document.getElementById('dit_id')
    billede.src = billeder(nummer)
    if(nummer==0){
        setTimeout("skift(billeder,3)",10000)
    }else{
        setTimeout("skift(billeder,nummer-1)",10000)
    }
}
//-->
</script>

</HEAD>
<BODY onload="init()">
<p>
<img border="0" src="images/Mandag.jpg"><br>
<img border="0" src="images/Søndag.jpg"><br>
<img border="0" src="images/Lørdag.jpg"><br>
<img border="0" src="images/Fredag.jpg"></p>
</BODY>
</HTML>
Avatar billede busschou Praktikant
14. april 2005 - 08:55 #5
alle linjerne øverst skal du indsætte fuld sti som dette
var mandag = new Array("images/Fredag.jpg","images/Lørdag.jpg","images/Søndag.jpg","images/Mandag.jpg")
Du skal også rette hvis det hedde Loerdag i stedet for Lørdag
Du skal kun vise eet billede og ikke fire tilgengæld skal det have et id
<img border="0" id="myPic" src="images/Mandag.jpg">
I funktionen skift skal du så rette
var billede = document.getElementById('myPic')
Avatar billede busschou Praktikant
14. april 2005 - 08:57 #6
Den første funktion init() finder ud af hvilken dag det er den aktuelle dag
Derefter kalder den funktionen skift() med de dage som skal vises samt det billede der skal vises først
Funktionen skift() sætter source (src) på dit billede med id="myPic" til den sti som står i arrayet "billeder"
Dernæst kalder den sig selv med ti sek interval med billedet fra dagen før i arrayet
Derved burde de gerne skifte..men jeg har ikke testet
Så hvis du lægger det op og det ikke virker så giv evt et link
Avatar billede spacee Nybegynder
14. april 2005 - 09:08 #7
Jeg sidder i las vegas og det er midnat her nu ... saa jeg kigger paa det i morgen tidlig og giver feedback der :)
Avatar billede busschou Praktikant
14. april 2005 - 09:10 #8
ok spil ikke alle pengene op ;o)
Avatar billede busschou Praktikant
14. april 2005 - 10:34 #9
Følgende er testet og virker. Du skal bare som nævt rette navnene så Mandag.jpg bliver til /images/Mandag.jpg osv så de får den fulde sti:
-----------------------------
<HTML>
<HEAD>
<TITLE>Test</TITLE>

<script LANGUAGE="Javascript">
<!--//
var dato=new Date()
var mandag = new Array("Fredag.jpg","Lørdag.jpg","Søndag.jpg","Mandag.jpg")
var tirsdag = new Array("Lørdag.jpg","Søndag.jpg","Mandag.jpg","Tirsdag.jpg")
var onsdag = new Array("Søndag.jpg","Mandag.jpg","Tirsdag.jpg","Onsdag.jpg")
var torsdag = new Array("Mandag.jpg","Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg")
var fredag = new Array("Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg","Fredag.jpg")
var lørdag = new Array("Onsdag.jpg","Torsdag.jpg","Fredag.jpg","Lørdag.jpg")   
var søndag = new Array("Tordag.jpg","Fredag.jpg","Lørdag.jpg","Søndag.jpg")
var dag=dato.getDay()
var nummer = 3

function skift(){
    switch (dag){
    case 0:
        document.images.TEST.src = søndag[nummer]
    break
    case 1:
        document.images.TEST.src = mandag[nummer]
    break
    case 2:
        document.images.TEST.src = tirsdag[nummer]
    break
    case 3:
        document.images.TEST.src = onsdag[nummer]
    break
    case 4:
        document.images.TEST.src = torsdag[nummer]
    break
    case 5:
        document.images.TEST.src = fredag[nummer]
    break
    case 6:
        document.images.TEST.src = lørdag[nummer]
    break
    }
    if(nummer==0){
        nummer = 3
        setTimeout("skift()",1000)
    }else{
        nummer--
        setTimeout("skift()",1000)
    }
}
//-->
</script>

</HEAD>
<BODY onload="skift()">
<p>
<img name="TEST"><br>
</p>
</BODY>
</HTML>
Avatar billede roenving Novice
14. april 2005 - 16:25 #10
Tjah, nu er danske bogstaver jo så ugyldige i javascript identifiers, så der er masser af chancer for at scriptet slet ikke kan initialiseres ...

-- og jeg ville for en sikkerheds skyld også altid beholde det navngivningsskema, du selv viser !o]

-- og koden behøver vel sådan set kun eet array, man skal bare kende heltalsdivisionsresten i java script:

<script type="text/javascript">
var dayPics = ["Soendag.jpg","Mandag.jpg","Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg","Fredag.jpg","Loerdag.jpg"];

window.onload = function(){
  var today = new Date().getDay();
  document.images["idag"].src = dayPics[today];
  document.images["igaar"].src = dayPics[(today+6)%7];
  document.images["iforgaars"].src = dayPics[(today+5)%7];
  document.images["iforforgaars"].src = dayPics[(today+4)%7];
}
</script>

-- så mangler du kun de fire billed-elementer idag, igaar, iforgaars og iforforgaars !-)
Avatar billede spacee Nybegynder
15. april 2005 - 20:57 #11
roenving kunne du give et svar ogsaa ... jeg vil gerne give jer begge points da begge loesninger virker :)
Avatar billede spacee Nybegynder
16. april 2005 - 00:42 #12
Jeg har benyttes roenving's loesning,

er der en maade at faa billederne til at loade med det samme? ... "Sondag.jpg Mandag.jpg Tirsdag.jpg Onsdag.jpg Torsdag.jpg Fredag.jpg Loerdag.jpg" er de sidste billeder paa siden som loader, hvilket betyder er de billeder er broken for et godt stykke tid inden at de vises ... hvad kan goeres ved det?
Avatar billede spacee Nybegynder
16. april 2005 - 07:06 #13
onload, preload eller noget i den stil
Avatar billede roenving Novice
16. april 2005 - 10:33 #14
Du kan sætte dem igang med at loade med det samme:

<script type="text/javascript">
var dayPics = ["Soendag.jpg","Mandag.jpg","Tirsdag.jpg","Onsdag.jpg","Torsdag.jpg","Fredag.jpg","Loerdag.jpg"];
var imgs = new Array();
for(i=0;dayPics.length>i;i++){
  imgs[i] = new Image();
  imgs[i].src = dayPics[i];
}

window.onload = function(){
  var today = new Date().getDay();

...

-- det vil få loadingen til at gå igang, når siden loades, men om det vil forbedre performance meget er jeg da i tvivl om ...

-- velbekomme '-)
Avatar billede spacee Nybegynder
16. april 2005 - 22:58 #15
Hvis jeg har forstaaet det korrekt saa skal den del saettes ind i det eksisterende script ... jeg har proevet det og det giver script error ... det ser saadan her ud:

<script type="text/javascript">
var dayPics = ["images/sunday.gif","images/monday.gif","images/tuesday.gif","images/wednesday.gif","images/thursday.gif","images/friday.gif","images/saturday.gif"];
var imgs = new Array();
for(i=0;dayPics.length>i;i++){
  imgs[i] = new Image();
  imgs[i].src = dayPics[i];
}

window.onload = function(){
  var today = new Date().getDay();
  document.images["idag"].src = dayPics[today];
  document.images["igaar"].src = dayPics[(today+6)%7];
  document.images["iforgaars"].src = dayPics[(today+5)%7];
  document.images["iforforgaars"].src = dayPics[(today+4)%7];
}
</script>
Avatar billede spacee Nybegynder
16. april 2005 - 23:09 #16
Min fejl.. Scriptet laver ingen script errors, men det faar ikke friday.gif, saterday.gif... til at loade med det samme.

den loader foerst de billeder efter at alt andet er loaded :(
Avatar billede roenving Novice
17. april 2005 - 01:29 #17
Som standard vil en browser altid lige teste (IE 5+) om der evt. skulle findes en ny udgave af et billede, men den vil kun hente den nye, hvis der faksiskt er en ny ...

-- ofte vil det dog være svært at se forskellen !-)
Avatar billede spacee Nybegynder
17. april 2005 - 01:56 #18
Der er omkring 1mb data at loade fra websiden, saa selv med min 350kb/s connection jeg sidder og venter 4-5 sek foer at titlen loader ... jeg haabede at kunne goeres noget ved det
Avatar billede roenving Novice
19. april 2005 - 05:09 #19
1 Mb er da også utroligt meget, hvis ikke brugeren naturligt forventer det (billedgallerier f.eks. !-)

Tak for point ;~}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester