/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Hjælp til JavaScript JumpMenu
Fra : Kewin Pedersen


Dato : 11-01-05 17:07

For at lette navigationen på min hjemmeside, vil jeg gerne have indsat
en såkaldt JumpMenu. Dog er der det problem, at jeg ikke ved noget om
JavaScript. Hvilken kode skal jeg bruge, for at få sådan en ting til at
virke efter hensigten, og er der nogle, der kan forklare koden kort til
mig, så jeg ved hvad den gør, og hvorfor den gør det?

Mit udgangspunkt ligger i den JumpMenu som man kan få lavet i
Dreamweaver MX 2004. Koden er som følger:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>

<form name="form1" id="form1">
<select name="JumpMenu" onchange="MM_jumpMenu('parent',this,0)">
<option value="http://www.hjemmeside.dk">Test
<option value="http://www.hjemmeside.dk">Mere Test</option>
</select>
</form>

Hvad betyder alt det JavaScript kode, og hvorfor virker det? Jeg bruger
XHTML 1.0 Strict på min hjemmeside, og vil gerne have det hele validere
og er efter standarderne, skulle det være. Håber I har et bud!

 
 
Kewin Pedersen (13-01-2005)
Kommentar
Fra : Kewin Pedersen


Dato : 13-01-05 19:07

Er der virkelig ikke nogle, der kan forklare mig hvad alt det JavaScript
betyder, og hvad, der kan undlades eller rettes til, så det hele passer?

Erik Ginnerskov (13-01-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 13-01-05 22:43

Kewin Pedersen wrote:
> Er der virkelig ikke nogle, der kan forklare mig hvad alt det
> JavaScript betyder, og hvad, der kan undlades eller rettes til, så
> det hele passer?

Jeg kan ikke svare dig angående dit script, men du kan lave en menu på denne
måde:

<form id="menu" action=""><p>
<select size="1"
onchange="window.open(this.options[this.selectedIndex].value,'_self')">
<option selected="selected">Vælg side</option>
<option value="http://www.hjemmeside.dk">Side 1</option>
<option value="http://www.hjemmeside.dk">Side 2</option>
</select>
</p></form>

Der er alt det javascript, menuen behøver.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Kewin Pedersen (14-01-2005)
Kommentar
Fra : Kewin Pedersen


Dato : 14-01-05 13:29

> Jeg kan ikke svare dig angående dit script, men du kan lave en menu på denne
> måde:
>
> <form id="menu" action=""><p>
> <select size="1"
> onchange="window.open(this.options[this.selectedIndex].value,'_self')">
> <option selected="selected">Vælg side</option>
> <option value="http://www.hjemmeside.dk">Side 1</option>
> <option value="http://www.hjemmeside.dk">Side 2</option>
> </select>
> </p></form>
>
> Der er alt det javascript, menuen behøver.

Takker mange gange, var sådan set lige hvad jeg ledte efter, kort og
præcist, og så virker det! Dog kom jeg lige til at falde over følgende
bog, som jeg åbenbart har haft liggende i et ligge stykke tid. Det
drejer sig om: "44 JavaScripts - klar til brug", af Martin Sundstrøm.
Den er af nyere dato, men får lige at få det hele til at validere og se
ordentlig ud, har jeg kommet op med følgende kode:

<form id="menu" action=""><p>
<select onchange="window.top.location=this.value">
<option value="www.hjemmeside.dk">Side 1</option>
<option value="www.hjemmeside.dk" selected="selected">Side 1</option>
</select>
</p></form>

Som man kan se, så er selve onchange koden noget anderledes, og lidt
kortere, men har dette reelt noget at sige? Eller er den enste forskel
blot, at koden er forskellig, men at resultatet er det samme?
Umiddelbart synes jeg, at den sidste kodestump måske ser lidt lettere ud
at læse og forstå, for en som mig uden den store forstand på JavaScript.
Har du et forslag til hvad jeg skal vælge, eller er det lige meget, og
jeg bare skal vælge én af de to??

Jeg har også set, at man åbenbart skal have action="" med for at det
validere til XHMLT 1.0 Strict, hvilket jeg så har gjort, men ellers har
det ikke nogen betydning, at denne står alene (altså action="")? Size
behøves da nødvendigvis ikke, og bruges da kun hvis man vil have flere
end én ting vist af gangen, korrekt? Eller er der nogle browsere, det
vil forsøge at vise alle tingene på én gang, hvis man ikke specificere
size="1" f.eks.?

Jeg kan da også bare bruge præcis samme kode, med <form id="jumpmenu">
f.eks., til alle de steder på min hjemmeside, hvor jeg gerne vil have
indsat en jumpmenu, eller hvordan ligger det? Siden det er en unid id,
der er brugt, kan den så kun bruges én gang på en side, og ikke 2, hvis
man gerne vil have en både i toppen og bunden af siden? Var lige hvad
jeg kunne komme i tanke om i denne omgang

Erik Ginnerskov (14-01-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-01-05 18:06

Kewin Pedersen wrote:

>> onchange="window.open(this.options[this.selectedIndex].value,'_self')">

> <select onchange="window.top.location=this.value">

> Som man kan se, så er selve onchange koden noget anderledes, og lidt
> kortere, men har dette reelt noget at sige?

Så vidt jeg lige kan se af koderne, åbner mit forslag et nyt vindue, mens
din version genbruger det eksisterende. Det vil jeg da selv lige forske lidt
mere i.

> Har du et forslag til hvad jeg skal vælge, eller er det
> lige meget, og jeg bare skal vælge én af de to??

Har jeg ret i min antagelse herover, vil jeg foretrække din version.

> Jeg har også set, at man åbenbart skal have action="" med for at det
> validere til XHMLT 1.0 Strict, hvilket jeg så har gjort, men ellers
> har det ikke nogen betydning, at denne står alene (altså action="")?

Action må gerne være tom, når der som her med javascript eller på anden måde
er bestemt, hvad der skal ske.

> Size behøves da nødvendigvis ikke, og bruges da kun hvis man vil have
> flere end én ting vist af gangen, korrekt? Eller er der nogle
> browsere, det vil forsøge at vise alle tingene på én gang, hvis man
> ikke specificere size="1" f.eks.?

Size="1" er default-værdi, så hvis der ikke er sat size på, vises kun en
værdi, indtil der klikkes på ned-pilen i højre side af select-boksen. Sætter
du size på og sætter en værdi større end 1, vil der blive indsat en
scrollbar.
>
> Jeg kan da også bare bruge præcis samme kode, med <form id="jumpmenu">
> f.eks., til alle de steder på min hjemmeside, hvor jeg gerne vil have
> indsat en jumpmenu, eller hvordan ligger det?

Nej, den går ikke. Der må *kun* gøres brug at et specifikt id *en* gang på
hver side. Men du kan da, bruge en class i stedet, hvis formålet er at style
boksene.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Erik Ginnerskov (14-01-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 14-01-05 18:37

Erik Ginnerskov wrote:

> Så vidt jeg lige kan se af koderne, åbner mit forslag et nyt vindue,
> mens din version genbruger det eksisterende. Det vil jeg da selv lige
> forske lidt mere i.

En undersøgelse viser, at begge kodeversioner genbruger eksisterende vindue.
Det er mao. ligegyldigt, om du bruger den ene eller den anden.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Kewin Pedersen (15-01-2005)
Kommentar
Fra : Kewin Pedersen


Dato : 15-01-05 20:19

> Nej, den går ikke. Der må *kun* gøres brug at et specifikt id *en* gang på
> hver side. Men du kan da, bruge en class i stedet, hvis formålet er at style
> boksene.

Jeps, det er jo rigtigt nok, men var ikke lige sikker på, om det også
galt for et <form> tag. Men derfor må jeg da f.eks. godt bruge <form
id="jumpmenu">, med samme grundkode blot med andre links, på flere
forskellige sider?

Jeg kan da ikke genbruge min form to gange på én side, ved at skrive
<form class="jumpmenu">, kan jeg?

Men ellers tror jeg, jeg holder mig til min egen version, da jeg synes
den umiddelbart er lidt lettere at huske, og finde ud af, til en evt.
anden gang. Men min kode er også korrekt nok så? Her tænker jeg på
window.TOP.location, og om top bare angiver, at man bruger det åbne
vindue, og ikke et nyt?

Erik Ginnerskov (17-01-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 17-01-05 16:40

Kewin Pedersen wrote:

> Jeg kan da ikke genbruge min form to gange på én side, ved at skrive
> <form class="jumpmenu">, kan jeg?

Jo da. Du skal bare i css ændre # til .

#jumpmenu bliver til .jumpmenu

Et givet id må kun bruges en eneste gang på en webside. Det bliver ikke
lovligt at genbruge et id, bare fordi det er på en anden type html-element
anden gang.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste