Avatar billede Slettet bruger
05. juni 2005 - 00:52 Der er 10 kommentarer og
1 løsning

Et simpelt javascript efterlyses

Hej
Jeg har forgæves forsøgt at finde, nok den mest enkle javascript man overhovedet kan forestille sig - men uden held.

Det jeg skal bruger er et javascript som kan hente 8 html sider i numerisk rækkefølge - én af gangen. Siderne skal vises i en iframe og kaldes med en lille mouseover-knap.

Jeg har selv prøvet at bakse noget halløj sammen, men også uden held!

Nogen der kan hjælpe mig med et sådanne script ??

Scriptet må meget gerne kunne placeres som ekstern fil, og det skal virke i IE, Firefox og Netscrape.

PS. Ved godt hvordan man laver den eksterne fil.
PPS: Spørg endelig hvis jeg ikke har forklaret mig godt nok !
Avatar billede softspot Forsker
05. juni 2005 - 01:15 #1
Er det OK at definere adresserne på de sider der skal hentes i et array som f.eks.:

var pages = ['http://test.dk', 'http://test2.dk'];

Så kunne man f.eks. lave en funktion som henter en iframe via den id således:

var ifmPageID = 0;

function changeContent(ifmID) {
  var ifm = document.getElementById(ifmID);
  if(ifm) {
    ifmPageID++;
    if(ifmPageID > pages.length - 1) ifmPageID = 0;
    ifm.src = pages[ifmPageID];
  }
  return true;
}

ID'et på din iframe skal så ned til funktionen hver gang knappen trykkes. Der holdes styr på hvilken side der er aktiv og listen gennemløbes sekventielt og cyklisk (dvs. når listen er gennemløbet, startes der forfra fra første adresse igen).

Koden er ikke testet, men jeg håber du kan se idéen...
Avatar billede softspot Forsker
05. juni 2005 - 01:35 #2
Det kunne da egentlig godt være at man skulle tælle ifmPageID op efter man har skiftet siden i IFRAME'n... ellers vil funktionen starte med at vise den anden adresse i listen (dvs. pages[1]) - og det er nok ikke hensigten :)
Avatar billede Slettet bruger
05. juni 2005 - 01:42 #3
Defineringen af adresserne er fint nok.

Men iframen er permanent på siden, og kalder nemlig første side (http://test.dk), så script'et skal ligge uden for iframen (gerne eksternt jo).

Hvis vi nu kalder iframen for; id="flash" hvor skal dette så ind i din funktion ?
Og skal den kaldes med <a onclick="changeContent();"></a> eller hvordan ?

Er desværre ikke så hård til dette her...
Avatar billede Slettet bruger
05. juni 2005 - 01:45 #4
"...starte med at vise den anden adresse i listen"

Det betyder ikke noget, det er fint nok!
Avatar billede softspot Forsker
05. juni 2005 - 02:01 #5
Du får lige en side som du kan kopiere og teste:

<%@ language="vbscript" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
  <head>
    <title>Test sekventiel cyklisk skift af IFRAME-indhold</title>
    <script>
        var pages = ['http://www.yahoo.com', 'http://www.jubii.dk', 'http://www.eksperten.dk'];

        var ifmPageID = 0;

        function changeContent(ifmID) {
        var ifm = document.getElementById(ifmID);
        if(ifm) {
            ifm.src = pages[ifmPageID++];
            if(ifmPageID > pages.length - 1) ifmPageID = 0;
        }
        return true;
        }
    </script>
  </head>
  <body>
   
    <form id="Form1" method="post" runat="server">
        <input type="button" onclick="return changeContent('ifm1');" value="Skift side"/><br/>
        <iframe id="ifm1" src="http://www.eksperten.dk" style="width:800px; height:600px;">
        </iframe>
    </form>
   
  </body>
</html>
Avatar billede Slettet bruger
05. juni 2005 - 02:35 #6
Tusinde tak !!

Jeg har pakket script'et og lagt det eksternt, og det ser stadig ud til at virke perfekt i både IE, FireFox og Netscrape.

Jeg har så fjernet form'en, da den væltede hele siden. Og erstattet <input> med
<a onclick="return changeContent('ifm1'); "onmouseover="skiftBillede('fls','on')" onmouseout="skiftBillede('fls','off')"><img src="/img.gif" border="0" name=fls></a>

Smid et svar, så du kan få 200 meget velfortjente point. (Har bøvlet med dette alt alt for længde hehe...)
Avatar billede olebole Juniormester
05. juni 2005 - 02:46 #7
<ole>

Husk også at rette alle HTML-fejlene  ;o)
HTML tillader ikke brug af XHTML-lukninger (de dér -> ' />'). Dem skal du helt klart slette, da de intet har at gøre i HTML.
Og så er:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

- ikke en brugbar DTD, hvis du vil bruge CSS på din side. Du bør i stedet bruge:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

- hvis IE også skal kunne forstå CSS  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
05. juni 2005 - 02:51 #8
Ole:
Jeg har forlængst slette "xhtml'erne" og bruger iforvejen 4.01 doctype'en, men ellers tak! :-)

Jeg må sige at det funger perfekt det script, thumps up Softspot!
Avatar billede olebole Juniormester
05. juni 2005 - 02:56 #9
Selvtak ... begge er nu 4.01 DTD'er - men kun den sidste tillader brug af CSS i IE  :)
Avatar billede Slettet bruger
05. juni 2005 - 03:13 #10
Ole: Nåår okay, det er pga. linket så ?? - Hvilket jeg iøvrigt har med i min doctype, men var egentlig ikke klar over det...
Avatar billede softspot Forsker
05. juni 2005 - 09:37 #11
baseiq > Jeg er glad for at jeg kunne bidrage til løsning af dit problem, men naturligvis ked af at jeg ikke kunne levere en helt færdig løsning (måske man skulle læse lidt mere om DOCTYPES og hvad de er godt for) :)

olebole > tak for redningen ;)
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