[firefox]menu; waarom in IE wel en in Firefox niet

Pagina: 1
Acties:

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 22:05
Ik vraag me dus af waarom menuus in Firefox niet werken, terwijl ze in IE wel goed werken. Bijvoorbeeld: www.danssportbond.nl
Hierbovenin staat een menu waarin naar de uitslagen van verschillende wedstrijden gegaan wordt. In IE iig, want in firefox wordt geen actie ondernomen (terwijl java toch echt enabled is en geinstalleerd is)
De W3C validator geeft aan dat het type="text/java" ontbreekt, maar ook door dat toe te voegen werkt het niet. Waardoor komt dit? De CSS-validator geeft aan dat er geen CSS gebruikt wordt, dus daar zal de fout dan wel niet liggen...
Zouden jullie eens willen kijken waardoor dit komt? De code waar het volgens mij om gaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<script language="JavaScript">
<!--

function Terug () {
  history.back ();
}
function Top () {
  window.scrollTo(0,0);
}
function HomeMenu (nr) {
  if (nr == 1) {
   location = "index.htm";
  }
  if (nr == 2) {
   Terug();
  }
  if (nr == 3) {
   location = "indexUK.htm";
  }
}

function Wedstrijden (nr) {
  if (nr == 0) window.location = "Wedstrijd/WedstrijdNL.htm";
  if (nr == 1) window.location = "Wedstrijd/WedstrijdNL.htm#ConV";
  if (nr == 2) window.location = "Wedstrijd/WedstrijdNL.htm#TimeT";
  if (nr == 3) window.location = "Wedstrijd/WedstrijdNL.htm#Rank";
  if (nr == 4) window.location = "Uitslagen/UitslagNL.htm";
  if (nr == 5) window.location = "Wedstrijd/WedstrijdNL.htm#DocU";
}
function Infomenu (nr) {
  if (nr == 0) window.location = "Mededeling/MededelingNL.htm";
  if (nr == 1) window.location = "Mededeling/MededelingNL.htm";
  if (nr == 2) window.location = "Reglementen/ReglementenNL.htm";
  if (nr == 3) window.location = "Contact/ContactNL.htm";
  if (nr == 4) window.location = "Webmasters/WebmasterNL.htm";
  if (nr == 5) window.open ("Reglementen/Juryledenlijst.pdf");
  if (nr == 6) window.location = "DVD/DvdNL.htm";
  if (nr == 7) window.location = "FDO/FdoNL.htm";
  if (nr == 8) window.location = "Topsport/TopsportNL.htm";
  if (nr == 9) window.open ("Reglementen/beleidsplan_nadb_2000-2005.pdf");
  if (nr == 10) window.location = "Disclaimer_NADB.htm";
  if (nr == 11) window.location = "Scrutineer/ScrutineerNL.htm";
}
function Online (nr) {
  if (nr == 1) window.location = "OnlineEntry/DebEntry.htm";
  if (nr == 2) window.location = "OnlineEntry/AdtEntry.htm";
  if (nr == 3) window.location = "OnlineEntry/SenEntry.htm";
  if (nr == 4) window.open("Wedstrijd/Hoe_werkt_de_online_opgave.pdf");
  if (nr == 5) window.location = "Wedstrijd/WedstrijdNL.htm#opgwed"
}
function Linkmenu (nr) {
  if (nr == 0) window.location = "Links/LinksNL.htm";
}
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
//-->
</script>

En
code:
1
2
3
4
5
6
<select name="HomeM" size="1" onChange="MM_callJS('HomeMenu (document.forms[0].HomeM.options.value)')">

                <option value="0">Home</option>
                <option value="1">Hoofdmenu</option>
                <option value="2">Nivo terug</option>
              </select>

wat ik hier lees is dus, dat in het gedeelte HomeM, bij verandering MM_callJS opgeroepen wordt (het script van de 1e code) en dan worden een aantal opties meegegeven. Lijkt mij op zich heel logisch, maar blijkbaar is het geen standaard javascript/html want het werkt niet. Klopt mijn redenering en zo nee, wat is er fout aan?

Het enige wat ik ken is een heel klein beetje html, dus als het kan met voorbeeldcode erbij als iets gezegd wordt (ipv gewoon javablabla aanroepen, ook met code <script type="text/java". oid...)

Sorry als het een echte beginnersfout is, maar ik heb zo goed mogelijk mijn best gedaan op deze startpost en echt logisch na proberen te denken...

  • Marcj
  • Registratie: November 2000
  • Laatst online: 21-05 14:22
Je zou kunnen gaan debuggen. Bijvoorbeeld in de functie HomeMenu kun je bovenaan zetten alert(nr); oid... Hiermee kun je zien of wel het goede nummer wordt meegegeven. Als je dan undefined krijgt te zien zit daar ergens je probleem. Zo kun je nog meer dingen uitproberen.

edit: Is het niet document.location.href = "blaat" ipv document.location = ".." ???
Kijk hier maar eens: http://www.w3schools.com/htmldom/dom_obj_window.asp
window.location is een object die je volgens mij niet zomaar een waarde kan geven (al vind IE dat wel goed).

[ Voor 34% gewijzigd door Marcj op 05-10-2004 01:13 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Misschien is het een idee om JS scripts zelf te leren maken ipv eentje uit een webdev-pakket te trekken en je dan af te vragen waar het aan ligt..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Semyon
  • Registratie: April 2001
  • Laatst online: 06:11
Je "document.forms[0].<name>.options.value" is undefined in Firefox.
Verder vind ik de extra eval stap bijzonder vreemd.

Ziet zoiets er niet veel logischer uit?

code:
1
2
3
4
5
              <select name="HomeM" size="1" onchange="HomeMenu (this.value)">
</select>
              <select name="wedstr" onchange="Wedstrijden(this.value)" size="1"></select>

..

Only when it is dark enough, can you see the stars


  • Johnny
  • Registratie: December 2001
  • Laatst online: 21-05 14:52

Johnny

ondergewaardeerde internetguru

Hierbovenin staat een menu waarin naar de uitslagen van verschillende wedstrijden gegaan wordt. In IE iig, want in firefox wordt geen actie ondernomen (terwijl java toch echt enabled is en geinstalleerd is)
De W3C validator geeft aan dat het type="text/java" ontbreekt, maar ook door dat toe te voegen werkt het niet. Waardoor komt dit?
Omdat het javascript is!! Dat is dus geen Java, je hoeft dus niets te installeren, want het zit in je browser. Je moet bij het type dan ook text/javascript zetten en niets anders.


je code kan ook veel compacter (en sneller), als je bijvoorbeeld gebruik maakt van arrays heb je voor de wedstrijden nog maar zoveel code nodig:
code:
1
2
3
4
5
6
7
8
9
10
11
12
var wedstrijden=[]; //maak de array
wedstrijden[0]="Wedstrijd/WedstrijdNL.htm";
wedstrijden[1]="Wedstrijd/WedstrijdNL.htm#ConV";
wedstrijden[2]="Wedstrijd/WedstrijdNL.htm#TimeT";
wedstrijden[3]="Wedstrijd/WedstrijdNL.htm#Rank";
wedstrijden[4]="Uitslagen/UitslagNL.htm";
wedstrijden[5]="Wedstrijd/WedstrijdNL.htm#DocU";

function Wedstrijden (nr) {
//kies het nummer van het element in de array en ga naar die locatie
    window.location = wedstrijden[nr];
}

Maar let wel op: het gebruiken van javascript links is heel slecht voor je positie in zoekresultaten bij bijvoorbeeld Google!

[ Voor 46% gewijzigd door Johnny op 05-10-2004 01:40 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 22:05
Nou, de site is dus niet van mij... Het enige antwoord wat ik kreeg op mijn vraag dat firefox niet werkte was dat ik maar IE of Netscape Navigator moest gebruiken... Beetje krom, dus wil ik uitzoeken waar het aan ligt.

Verwijderd

Ik merk toch dat de "document"-JSreferentie vaak in beide browsers wel werkt, en de "window"-JSreferentie alleen in MSIE werkt... Trek je eigen conclusie(s) maar.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:47

crisp

Devver

Pixelated

Verwijderd schreef op 05 oktober 2004 @ 10:10:
Ik merk toch dat de "document"-JSreferentie vaak in beide browsers wel werkt, en de "window"-JSreferentie alleen in MSIE werkt... Trek je eigen conclusie(s) maar.
En dat durf ik best tegen te spreken. document.location was bedoelt als een read-only attribuut, maar is in het verleden door browserbouwers verkeerd geimplementeerd. window.location heeft altijd al bestaan en werkt ook gewoon in alle browsers; als je het location object een string toewijst dan wordt de default href property geset, maar mooier is om expliciet het volgende te doen:
JavaScript:
1
window.location.href = 'meuk.html';


document.location is trouwens al een tijdje deprecated, daarvoor is document.URL in de plaats gekomen.

Om op het probleem van TS terug te komen: in dit specifieke geval hoef je eigenlijk niet eens met een formulier te werken; dit werkt ook prima:

HTML:
1
<select onchange="HomeMenu(this.options[this.selectedIndex].value)">


Bedenk dat de value die wordt meegestuurd geen integer is maar een string (gelukkig doet JS aan automatic typecasting).

Intentionally left blank


Verwijderd

gebruik document.forms[0].selectedIndex

Wat je nodig hebt is de index. De 'value' is de text.
<form>
<select name="HomeM" size="1"
onChange="HomeMenu(document.forms[0].HomeM.selectedIndex)">
<option value="0">Home</option>
<option value="1">Hoofdmenu</option>
<option value="2">Nivo terug</option>
</select>

</form>

Verwijderd

Verwijderd schreef op 05 oktober 2004 @ 10:42:
gebruik document.forms[0].selectedIndex

Wat je nodig hebt is de index. De 'value' is de text.
Was dus fout. Value is wel OK. 8)7

Voorbeeld van crisp is ook goed en beter.
Gepost tijdens mijn online check :'(
Pagina: 1