Toon posts:

document.all omzetten naar document.getElementById

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

ik heb een webpagina die ik ook graag in Firefox wil laten werken.
Het probleem zit hem in het javascript menu.

Door gebruik van document.all werkt het script niet onder Firefox.
Deze moet vervangen worden door document.getElementById.

Maar als ik deze door replace allemaal laat vervangen,
werkt het script helemaal niet meer :'(

code:
1
2
3
4
5
6
7
8
9
function SubsubmenuElements(){
        var j = 0;
        for(i=0; i<document.all.length; i++){
            if(document.all[i].id.substring(0,10) == "subsubmenu"){
                arrSubsubmenuElements[j] = i;
                j++;
            }
        }
    }


Heb ik bijv gewijzigd naar:

code:
1
2
3
4
5
6
7
8
9
function SubsubmenuElements(){
        var j = 0;
        for(i=0; i<document.getElementById.length; i++){
            if(document.getElementById('i').id.substring(0,10) == "subsubmenu"){
                arrSubsubmenuElements[j] = i;
                j++;
            }
        }
    }


Wat doe ik verkeerd ?

[ Voor 5% gewijzigd door Verwijderd op 10-12-2004 19:39 ]


  • semicolon
  • Registratie: Mei 2004
  • Niet online
getElementById('i').
i is toch een variabel, geen string? (quotes weg?)
En kijk eens naar de Javascript Console onder Tools bij Firefox, zie je meestal gelijk wat je fout is..

[ Voor 42% gewijzigd door semicolon op 10-12-2004 19:43 ]

:D/-<


Verwijderd

getElementById is een functie, geen collection (retourneert er wel 1), lees de specs anders even.

[ Voor 36% gewijzigd door Verwijderd op 10-12-2004 19:43 ]


Verwijderd

getElementById is een methode, en verwacht altijd een argument. Er hoort dus getElementById(argument) te staan, waarbij argument een string is. Verder mogen id's niet numeriek zijn, dus slaat je hele code nergens meer op. Verdiep je eerst eens in DOM voordat je zoiets zelf gaat bedenken. Daar heb je nou documentatie voor. Natuurlijk mag je vragen stellen, maar dit is een beetje DOM.

[ Voor 3% gewijzigd door Verwijderd op 10-12-2004 19:43 ]


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
/me opmerkt dat TS de dubbelzinnigheid van deze zinsnede waarschijnlijk ontgaat ;)

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 19-05 12:44
Ervan uitgaande dat al je menu-opties in een <li> staan moet je dit gebruiken:

JavaScript:
1
2
3
4
5
6
7
8
9
function SubsubmenuElements(){
        var i, j = 0, li = document.getElementsByTagName('li');
        for(i=0; i<li.length; i++){
            if(li.item(i).getAttribute('id').substring(0,10) == "subsubmenu"){
                arrSubsubmenuElements[j] = i;
                j++;
            }
        }
    }
Pagina: 1