Avatar billede simm Nybegynder
02. april 2006 - 16:09 Der er 41 kommentarer og
1 løsning

Billedskift med 3 billeder

Hej eksperter,

Jeg sidder lige og fifler med et billedrotationsscript
Det skal rotere billeder vilkårligt, men må ikke vise det samme billede samtidigt i de tre kasser. Rotationen virker fint nok, men.. jeg døjer noget med at få den til, såfremt at det vilkårligt fundne billede står på samme position i current-arrayet (se nedenstående kode), så skal den udføre en math.random mere, så jeg er sikker på at der aldrig vises ens billeder.

Kan I hjælpe?
På forhånd tak,
Simon


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ChangeImg</title>
<script language="JavaScript">
function init()
{
   
    var current = 0;
   
      pics = new Array();
    pics[current]="images/1.jpg";
    pics[current++]="images/2.jpg";
    pics[current++]="images/3.jpg";
    pics[current++]="images/4.jpg";
    pics[current++]="images/5.jpg";
    pics[current++]="images/6.jpg";
    pics[current++]="images/7.jpg";
    pics[current++]="images/8.jpg";
    pics[current++]="images/9.jpg";
   
    if (!document.images) return;

    var antal = pics.length;
   
    for (imageid=1; imageid<=3; imageid++){
      do {
        randno = Math.floor(Math.random()*antal);
    } while (current == randno);
    document.getElementById('image'+ imageid).src = pics[randno];
}
    setTimeout("init();",3000);   
}
</script>
</head>

<body bgcolor="#FFFFFF" onload="java script:init()">
<img src="images/1.jpg" id="image1" alt="" />
<img src="images/2.jpg" id="image2" alt="" />
<img src="images/3.jpg" id="image3" alt="" />
</body>
</html>
Avatar billede mclemens Nybegynder
02. april 2006 - 17:21 #1
sådan ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ChangeImg</title>
<script language="JavaScript">
 
    var current = 0;
 
      pics = new Array();
    pics[current]="images/1.jpg";
    pics[current++]="images/2.jpg";
    pics[current++]="images/3.jpg";
    pics[current++]="images/4.jpg";
    pics[current++]="images/5.jpg";
    pics[current++]="images/6.jpg";
    pics[current++]="images/7.jpg";
    pics[current++]="images/8.jpg";
    pics[current++]="images/9.jpg";
    var antal = pics.length;

function init(){
tmpholder="";
if((!document.getElementById("image1"))||(!document.getElementById("image2"))||(!document.getElementById("image3"))){}else{
  imageid=1;while(imageid<4){
  randno=Math.floor(Math.random()*antal);
  if(!tmpholder.match(randno)){
    tmpholder=tmpholder+","+randno;
    document.getElementById('image'+ imageid).src = pics[randno];
    imageid++;
  }
  }
  setTimeout("init();",3000); 
}
}
</script>
</head>

<body bgcolor="#FFFFFF" onload="java script:init()">
<img src="images/1.jpg" id="image1" alt="" />
<img src="images/2.jpg" id="image2" alt="" />
<img src="images/3.jpg" id="image3" alt="" />
</body>
</html>
Avatar billede simm Nybegynder
02. april 2006 - 17:45 #2
Hej Mclemens! Tak for forsøget :), men det gjorde ingen forskel, den kan stadig godt finde på at vise det samme billede i de tre img-tags. Lad os sige jeg har ti billeder fordelt i de tre img-tags.. de bliver vist sådan: billed1 - billed2 - billed3 .. så når den skifter kan den godt finde på at vise: billed1 - billed2 - billed2 ..

Der skal den så finde ud af "hov.. der er to identiske" og køre en Math.floor(Math.random()*antal); indtil de er forskellige. Det er det jeg forsøgte med do-while løkken.. men det fungerer ikke.. bruger jeg blot if eller while så står jeg med en uendelig løkke som får browseren til at brokke sig.
Avatar billede mclemens Nybegynder
02. april 2006 - 17:56 #3
hmm, billederne må ikke komme to gange i træk i det næste gennemløb... prøv denne...

Der skal den så finde ud af "hov.. der er to identiske" og køre ... bruger jeg blot if eller while så står jeg med en uendelig løkke som får browseren til at brokke sig.>
- burde ikke være tilfældet da du ikke har over 9 billeder der skal skiftes... den vil på et eller andet tidspunkt ramme et billede der ikke er taget med denne og øge imageid så løkken ikke fortsætter...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ChangeImg</title>
<script language="JavaScript">
 
    var current = 0;
    var tmpctrlstr="";
 
      pics = new Array();
    pics[current]="images/1.jpg";
    pics[current++]="images/2.jpg";
    pics[current++]="images/3.jpg";
    pics[current++]="images/4.jpg";
    pics[current++]="images/5.jpg";
    pics[current++]="images/6.jpg";
    pics[current++]="images/7.jpg";
    pics[current++]="images/8.jpg";
    pics[current++]="images/9.jpg";
    var antal = pics.length;

function init(){
tmpholder="";
if((!document.getElementById("image1"))||(!document.getElementById("image2"))||(!document.getElementById("image3"))){}else{
  imageid=1;while(imageid<4){
  randno=Math.floor(Math.random()*antal);
  if((!tmpholder.match(randno))&&(!tmpctrlstr.match(randno))){
    tmpholder=tmpholder+","+randno;
    document.getElementById('image'+ imageid).src = pics[randno];
    imageid++;
  }
  }
  tmpctrlstr=tmpholder;
  setTimeout("init();",3000); 
}
}
</script>
</head>

<body bgcolor="#FFFFFF" onload="java script:init()">
<img src="images/1.jpg" id="image1" alt="" />
<img src="images/2.jpg" id="image2" alt="" />
<img src="images/3.jpg" id="image3" alt="" />
</body>
</html>
Avatar billede mclemens Nybegynder
02. april 2006 - 18:02 #4
//ot i første script ville den dog ikke vise samme billede to gange i træk i nogle af de 3 billeder heller ikke i andet gennemløb... forskellen er blot at denne sørger for at den heller ikke viser billederne fra sidste gennemløb i det næste...
Avatar billede mclemens Nybegynder
02. april 2006 - 18:03 #5
jo, så det lige... sorry
Avatar billede mclemens Nybegynder
02. april 2006 - 18:04 #6
edit jo, så det lige... sorry
- nej, de var egentlig forskellige alligevel...
bare mig der havde lavet to ens farver :P
Avatar billede mclemens Nybegynder
02. april 2006 - 18:07 #7
de linier her gør at de aldrig kan være ens i 1. script:

  if(!tmpholder.match(randno)){
    tmpholder=tmpholder+","+randno;
    document.getElementById('image'+ imageid).src = pics[randno];
    imageid++;
  }


de linier her gør at de aldrig kan være ens i 2. script samt at billederne ikke kan være de samme som de var sidste gang:
  if((!tmpholder.match(randno))&&(!tmpctrlstr.match(randno))){
    tmpholder=tmpholder+","+randno;
    document.getElementById('image'+ imageid).src = pics[randno];
    imageid++;
  }
Avatar billede steen_hansen Forsker
02. april 2006 - 18:08 #8
Hej drenge og/eller piger :o)

Jeg ville gerne have en identisk løsning, som dog kunne generere en del trafik. Men det virkede: http://www.eksperten.dk/spm/462082
Avatar billede olebole Juniormester
02. april 2006 - 18:12 #9
<ole>

- og så giver dette array vist en lidt slankere kode:

pics = new Array(
    "images/1.jpg",
    "images/2.jpg",
    "images/3.jpg",
    "images/4.jpg",
    "images/5.jpg",
    "images/6.jpg",
    "images/7.jpg",
    "images/8.jpg",
    "images/9.jpg"
);
var antal = pics.length,

/mvh
</bole>
Avatar billede mclemens Nybegynder
02. april 2006 - 18:12 #10
Avatar billede mclemens Nybegynder
02. april 2006 - 18:14 #11
hvorfor egentlig lave array hvis det er forløbende så
forstebillede=1;
sidstebillede=9;
og gøre scriptet betinget mellem tallene
og køre random på 9 med ceil...
Avatar billede mclemens Nybegynder
02. april 2006 - 18:18 #12
f.eks.:

<script language="JavaScript">

forstebillede=1;
sidstebillede=9;
stitilpics="./images/";

function init(){
tmpholder="";
if((!document.getElementById("image1"))||(!document.getElementById("image2"))||(!document.getElementById("image3"))){}else{
runit=1;while(runit<4){
  randno=Math.ceil(Math.random()*sidstebillede);
  if(!tmpholder.match(randno)){
    tmpholder=tmpholder+","+randno;
    document.getElementById('image'+ runit).src = stitilpics+randno+".jpg";
    runit++;
  }
  }
  setTimeout("init();",3000);
}
}
</script>
Avatar billede mclemens Nybegynder
02. april 2006 - 18:18 #13
hov, nåh det var script 1... men script 2 er jo det samme bare med udvidelsen :)
Avatar billede olebole Juniormester
02. april 2006 - 18:20 #14
mclemens >> fordi man jo aldrig har billedfiler (eller for den sags skyld andre filer), hvis filnavn begynder med et tal  ;o)
Avatar billede mclemens Nybegynder
02. april 2006 - 18:24 #15
ok
Avatar billede mclemens Nybegynder
02. april 2006 - 18:25 #16
edit ok = ok :)
Avatar billede apo Praktikant
02. april 2006 - 18:28 #17
Ole > Nysgerrighed: Hvad er forklaringen på at man ikke må navngive filnavne med tal først?
Avatar billede mclemens Nybegynder
02. april 2006 - 18:30 #18
hmm, også nysgerrig det gør jeg ved alle mine billedfiler til div. varer :/
Avatar billede mclemens Nybegynder
02. april 2006 - 18:31 #19
... men det er jo ikke så tit tilfældet at man gør det ...
Avatar billede apo Praktikant
02. april 2006 - 18:36 #20
mclemens > Jeg har selv en del grafik-filer, der er navngivet med tal: 1.png, 2.png osv.; Så det vil være interessant at kende forklaringen på hvorfor det ikke er godt.
Avatar billede olebole Juniormester
02. april 2006 - 18:40 #21
- fordi, det ikke er tilladt. At en del servere så spænder sikkerhedsnet ud, bør ikke afholde én fra at gøre det rigtigt  :)
Avatar billede apo Praktikant
02. april 2006 - 18:47 #22
Ah, så det er altså et sikkerhedsspørgsmål? Hvad kan der f.eks. ske ved, at navngive filer som: '1.png' osv., ved du det?
Avatar billede apo Praktikant
02. april 2006 - 18:47 #23
... Jeg er jo (som du ved) pisse-irriterende nysgerrig ;-)
Avatar billede mclemens Nybegynder
02. april 2006 - 18:50 #24
Hvis nu at det er muligt på sin server
er man vel safe eller er det kritisk?
(har ikke lige lyst til at rename 4977 filer manuelt plus
ind og rette i 4 .php filer hvis det ikke er kritisk...)
Avatar billede mclemens Nybegynder
02. april 2006 - 18:51 #25
men, ok så laver jeg nok et php
script der gør det for mig :P
Avatar billede olebole Juniormester
02. april 2006 - 18:51 #26
Ja, det er herligt  ;D

Du kan ikke være sikker på, alle servere forstår, hvad du vil. I det hele taget er det uhensigtsmæssigt at begynde filnavne med andet end bogstaverne 'a-z' - eller 'underscore' - og derefter bør der kun anvendes bogstaver fra det 'internationale' tegnsæt ... dvs. ingen danske specialtegn som 'æ', 'ø' og 'å'
Avatar billede apo Praktikant
02. april 2006 - 18:51 #27
mclemens > *LOL* Så ved du hvad du skal lave i de kommende dage, hvis det er kritisk ;-)
Avatar billede mclemens Nybegynder
02. april 2006 - 18:54 #28
nåh, ok jeg flytter ikke server det næste stykke tid :P
Avatar billede apo Praktikant
02. april 2006 - 18:58 #29
Ole > Det er altså af samme årsag, som det at man f.eks. heller ikke må navngive id'er (HTML/CSS) med tal først?

Så må jeg hellere omdøbe mine .png-filer (Jeg har trods alt noget færre af den slags filer end mclemens ;-p ).
Avatar billede apo Praktikant
02. april 2006 - 18:58 #30
mclemens > Hehe
Avatar billede mclemens Nybegynder
02. april 2006 - 18:58 #31
apo> Ja det ville være "rigtig sjovt" 8D
Avatar billede olebole Juniormester
02. april 2006 - 18:59 #32
mclemens >> nøøøhhh .... men den skal vel igennem en masse andre servere på vejen til brugeren. Det betaler sig under alle omstændigheder altid at overholde konventionerne ... så minimerer du mulighederne for fejl  :)
Avatar billede mclemens Nybegynder
02. april 2006 - 19:02 #33
ok, holder den lige i baghovedet til en dag hvor jeg triller tommelfingre... det hele er p.t. krydset ind i hinanden med nye og gamle anmelder / billedstr. m.v. og specielle php filer der leverer resultat baseret på hvilken anmeldelse det er (siden blev lavet efter en uges gennemlæsning af php 5 fra IDG)
Avatar billede mclemens Nybegynder
02. april 2006 - 19:02 #34
anmelder = anmeldelser af div. varer
Avatar billede simm Nybegynder
02. april 2006 - 19:29 #35
Ikke for at være en lyseslukker, men den har stadig med at der dukker ens billeder op efter et par gennemløb :)
Avatar billede mclemens Nybegynder
02. april 2006 - 19:38 #36
kan ikke få den til det på min...???
Avatar billede mclemens Nybegynder
02. april 2006 - 19:38 #37
har du et link?
Avatar billede simm Nybegynder
02. april 2006 - 20:09 #38
Hmm.. det lader også til at være et firefox-specifikt problem.. pyt med det :)
tusind tak for hjælpen :)
Avatar billede simm Nybegynder
02. april 2006 - 20:10 #39
smider du lige et svar?:)
Avatar billede mclemens Nybegynder
02. april 2006 - 20:14 #40
svar ;)
Avatar billede mclemens Nybegynder
02. april 2006 - 20:42 #41
takker for point :)
Avatar billede simm Nybegynder
02. april 2006 - 21:45 #42
så lidt - endnu en gang tak for hjælpen :)
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