Avatar billede dizzim Nybegynder
30. marts 2004 - 13:10 Der er 11 kommentarer og
1 løsning

Random image script med link

Jeg har lavet en hjemmeside (http://www.arca.frac.dk) hvor at jeg gerne vil have 4-5 random links tli at komme frem men det script jeg har nu viser kun billederne, og jeg kan kun få det til at linke til et bestemt sted for alle billederne... hvad skal jeg gøre hvis at det skal linke til forskellige sider for hvert enkelt billede?

Jeg er villig til at give flere point(200 ekstra) hvis der er en der kan lave et script der kan vise 5 forskellige billeder der ligger i en array(med et ubegrænset antal billeder i), og som hver linker til en ny side...
Det er lige meget hvilket sprog scriptet er skrevet i.
(dog ikke noget med flash eller andre typer der kræver et plugin)
Avatar billede roenving Novice
30. marts 2004 - 14:37 #1
Skal de bare ligge fast, eller skal de også skifte, mens man er på siden ?-)
Avatar billede dizzim Nybegynder
30. marts 2004 - 14:50 #2
De skal bare "ligge fast"... nothing fancy =)
Avatar billede roenving Novice
30. marts 2004 - 18:17 #3
Den første script-blok skal lægges inden td'en, f.eks. som en ekstern .js fil, som er kaldt inden (så skal du huske, at der ikke skal <script>-tags omkring !-)

<script type="text/javascript">
var pics = new Array('billede1.jpg','billede2.jpg','billede3.jpg','billede4.jpg','billede5.jpg','billede6.jpg','billede7.jpg','billede8.jpg','billede9.jpg','billede10.jpg');
var links = new Array('http://www.ditDomain.dk/1','http://www.ditDomain.dk/2','http://www.ditDomain.dk/3','http://www.ditDomain.dk/4','http://www.ditDomain.dk/5','http://www.ditDomain.dk/6','http://www.ditDomain.dk/7','http://www.ditDomain.dk/8','http://www.ditDomain.dk/9','http://www.ditDomain.dk/10');
var rnd = new Array(),numPics=4;//fastsæt antallet af billeder/links på siden

var n = Math.max(Math.min(pics.length,links.length),numPics);
rnd[0] = Math.floor(Math.random()*n);
for(j=1;numPics>j;j++){
  rnd[j] = Math.floor(Math.random()*n);
  while(!checkVal(j))rnd[j] = Math.floor(Math.random()*n);
}
//alert(rnd);
function checkVal(sl){
  var ok = true;
  for(i=0;sl>i;i++){
    ok = (rnd[i]!=rnd[sl])&&ok;
  }
  return ok;
}
</script>

  <td background="/images/background2.jpg" width="190" height="100%" bgcolor="#ffffff" align="center">
    <table>
      <script type="text/javascript">
        var txt="";
        for(i=0;numPics>i;i++){
          txt+='<tr><td><a href="'+links[rnd[i]]+'" onclick="location.href=this.href;return false"><img src="'+pics[rnd[i]]+'" width="150" height="50" alt="link '+rnd[i]+'"></a></td></tr>'
        }
        document.write(txt);
      </script>
    </table>
  </td>

Den nederste td er taget direkte ud af din side, og de iframes, du havde, da jeg kiggede er udskiftet med den table med scriptet i ...
Avatar billede roenving Novice
30. marts 2004 - 18:21 #4
Hvis du kopierer det hele herfra, kommer de slutninger af linjerne, du ikke kan se med !-)

-- og alt-propertyen er lavet for at jeg kunne se, at det virkede, men da den principielt skal med, kan du jo f.eks. ændre den fra rnd[i] til links[rnd[i]] ...

-- og her en udgave af array-definitionerne, hvor du kan se det hele:

<script type="text/javascript">
var pics = new Array('billede1.jpg','billede2.jpg','billede3.jpg','billede4.jpg','billede5.jpg','billede6.jpg', 'billede7.jpg','billede8.jpg','billede9.jpg','billede10.jpg');
var links = new Array('http://www.ditDomain.dk/1','http://www.ditDomain.dk/2','http://www.ditDomain.dk/3', 'http://www.ditDomain.dk/4','http://www.ditDomain.dk/5','http://www.ditDomain.dk/6','http://www.ditDomain.dk/7', 'http://www.ditDomain.dk/8','http://www.ditDomain.dk/9','http://www.ditDomain.dk/10');
var rnd = new Array(),numPics=4;//fastsæt antallet af billeder/links på siden
Avatar billede dizzim Nybegynder
30. marts 2004 - 20:58 #5
Tak for svaret, men jeg er ikke sikker på hvad du mener med at jeg skal ligge det inden td'en som en ekstern .js fil...
Jeg har lavet noget af det.. se det her http://www.arca.frac.dk/index4.html
Står næmere i sourcen... kunne ikke forklare placering osv. her.
Avatar billede roenving Novice
30. marts 2004 - 21:04 #6
Det kunne godt være der, jo, men så ville jeg placere den helt oppe i toppen, lige før </head>

<script type="text/javascript" src="/random.js"></script>

-- og som du kan se, så er der script-tag her, så der må _ikke_ være <script></script> i .js-filen !-)
Avatar billede dizzim Nybegynder
30. marts 2004 - 21:09 #7
det virker:) jeg skal bare lige have fastsat størrelser og border="0"... hvordan kan jeg gøre det?
(bare sæt det næste du skriver til svar du har jo svaret på mit spørgsmål)
Avatar billede roenving Novice
30. marts 2004 - 21:09 #8
-- og så har du skrevet, at du vil vise 6 links ?-)

-- tallet, du fastsætter med numPics = 6 er det antal, som udskrives på siden, så hvis du kun vil have f.eks. 4 ændrer du det til: numPics=4;

-- og du skal ikke angive hvor mange links du lægger, koden er fuldstændig ligeglad med, at du måske har tusindvis i dit array, det finder den selv ud af !-)
Avatar billede dizzim Nybegynder
30. marts 2004 - 21:11 #9
k.. tak.
Avatar billede roenving Novice
30. marts 2004 - 21:11 #10
Så kan vi jo ligesågodt lave det til style-angivelser:

txt+='<tr><td><a href="'+links[rnd[i]]+'" onclick="location.href=this.href;return false"><img src="'+pics[rnd[i]]+'" style="width:150px;height:50px;border:0px;" alt="link '+rnd[i]+'"></a></td></tr>'

-- og velbekomme '-)
Avatar billede roenving Novice
30. marts 2004 - 21:13 #11
width:150px;/*bredde*/
height:50px;/*højde*/
Avatar billede roenving Novice
30. marts 2004 - 21:25 #12
-- og tak for points ;~}
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
Kurser inden for grundlæggende programmering

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