Avatar billede mik789 Nybegynder
27. marts 2002 - 11:32 Der er 12 kommentarer og
1 løsning

cycling images

1) Hvorfor virker det her ikke? Det er bare et script der skal få en serie af billeder til at skifte, ligesom man gør med reklamebannere.

2) Kan det skrives enklere? Hvis man godt vil undgå betingelsen: if (document.images) som vel ikke er nødvendig hvis folk har browsere fra IE/NS4 og frem, hvordan skriver man så funktionen?

Billederne har lidt forskellige dimensioner (men holder sig alle inden for cellens mål). Er det derfor?

Her er koden:

<head>
<script language="javascript" type="text/javascript">

leftImages = new Array ("images/left_blackmadonna.jpg" [+ 21 andre billeder med "" omkring og adskilt med ,])

thisImg=0
imgCt=leftImages.length

function rotateImg() {
  if (document.images) {
      thisImg++
      if (thisImg==imgCt) {
        thisImg=0
      }
      document.leftImg.src=leftImages
        [thisImg]
      setTimeout("rotateImg()", 3 * 1000)
  }
}

</script>
</head>

<body [de sædvanlige attributter] onLoad="rotateImg()">

<td align="center" valign="top"><img src="images/left_blackmadonna.jpg" border="1" name="leftImg"></td>

/mik
Avatar billede Slettet bruger
27. marts 2002 - 11:34 #1
Smid et link.
Avatar billede Slettet bruger
27. marts 2002 - 11:35 #2
Hvis du vil slette if (document.images)-betingelsen, skal du bare slette den linje og den andensidste tuborg }
Avatar billede jakoba Nybegynder
27. marts 2002 - 11:41 #3
Jeg går udfra at der er <table og <tr omkring tabellen og </body og </html til at slutte af?

det er mere korrekt at adressere billedet med:

      document.images.leftImg.src=leftImages

og at afslutte sætninger med ;
og at skrive var foran variabel definitioner at sikre variable bliver tilknyttet deres rette scope.

<head>
<script language="javascript" type="text/javascript">

var leftImages = new Array ("images/left_blackmadonna.jpg" [+ 21 andre billeder med "" omkring og adskilt med ,]);

var thisImg=0;
var imgCt=leftImages.length;

function rotateImg() {
  if (document.images) {
      thisImg++;
      if (thisImg==imgCt) {
        thisImg=0;
      }
      document.leftImg.src=leftImages[thisImg];
      setTimeout("rotateImg()", 3 * 1000);
  }
}

</script>
</head>

<body [de sædvanlige attributter] onLoad="rotateImg()">

<td align="center" valign="top"><img src="images/left_blackmadonna.jpg" border="1" name="leftImg"></td>

men de fleste af de ting vil ihvertfald IE overleve, så måske der skal mere til.

mvh JakobA
Avatar billede jakoba Nybegynder
27. marts 2002 - 11:42 #4
Og så glemte jeg adresserings rettelsen. Det er ellers den vigtigste:
      document.images.leftImg.src=leftImages[thisImg];
Avatar billede mik789 Nybegynder
27. marts 2002 - 12:09 #5
OK, tak for hjælpen så langt...

det er ikke scriptet det er galt med. jeg har nu prøvet at tage det ud (inkl. de ander koder der hører til i <body> og <img>) og over i et skrabet html skabelon uden alt det andet, og så virker det. Så det er noget jeg skal have fjernet. Kigger lige lidt videre...
Avatar billede mik789 Nybegynder
27. marts 2002 - 12:21 #6
OKOK! har nu fundet ud af at det der forstyrrer et flg. i <body>:

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

dvs. et eksternt script der kaldes i <body> som det første. Er der noget om at man ikke uden videre kan have både intern og ekstern script på samme side???
Avatar billede mik789 Nybegynder
27. marts 2002 - 12:30 #7
- eller er det fordi at netop dette script (fixLinks) der fjerner fokus fra alle links også kommer til at fjerne fokus fra alle <img>'er? - nej, det lyder da for krøllet???
Avatar billede mik789 Nybegynder
27. marts 2002 - 12:32 #8
under alle omstændigheder er jeg stadig interesseret i et svar på mit sp.2, om det kan skrives enklerere. Nu ved vi jo at scriptet som det var skrevet allerførst sandsynligvis virkede, for det var ikke det der var i vejen. 60 points under alle omstændigheder.
Avatar billede mik789 Nybegynder
27. marts 2002 - 12:51 #9
og så for resten... prøv og se resultatet (kommentarer velkomne):

http://www.dahr.dk/index_ny.html

(Dette er kun en testversion - I kan ikke bruge menuen i hovedsiden i denne version)
Avatar billede mik789 Nybegynder
27. marts 2002 - 19:25 #10
halo, der er stadig 60 point på spil - og jeg vil godt finde ud af hvorfor et eksternt script gør at et internt ikke virker?
Avatar billede mik789 Nybegynder
28. marts 2002 - 08:09 #11
OK, jeg lukker spørgsmålet. Jeg fik løst problemet, selv om fejlen ikke lå i selve scriptet men i samspillet med et eksternt script (og det har stadig ikke helt forstået). Hele det reviderede site (med billeder og styret af jakoba's framescript) ligger nu på http://www.dahr.dk/ny

Skulle nogle gide at kigge forbi, er jeg glad for kommentarer.

/mik
Avatar billede jakoba Nybegynder
28. marts 2002 - 09:25 #12
Den almindeligste årsag til at 2 scripts på samme side får det ene til ikke at virke er at begge scripts skal have initiereret et eller andet onload.
billedscriptet gør det med den der onload= handler i <body kommandoen.

prøv at kikke i kildeteksten til det andet script. jeg vil tippe at der et sted i det script står en linie som:

onload = navnpåenfunktion;

den linie overskriver den onloadhandler der tidligere blev defineret i <body kommandoen og så bliver dit billedscript ikke startet.

løsningen er at fjerne den linie og samle det hele i onload-handleren i body:

<body ... onload="rotateImg();navnpåenfunktion()">

så bliver begge script startet.

beklager sen respons. e's notify er ikke altid til at stole på :(

mvh JakobA
Avatar billede mik789 Nybegynder
28. marts 2002 - 09:44 #13
nåhh ja, selvfølgelig. det er rigtigt, der var en onload i begge tilfælde.
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