[JavaScript] document.getElemenById has no properties - von wegen!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] document.getElemenById has no properties - von wegen!

    hi,
    ich hänge seit 2 stunden an einem blöden javascript problem.
    ich versuche eine navigation mittels listen zu realisieren, bei der man bestimmte <li>'s verbergen kann.

    Code:
    var menu_array = new Array();
    menu_array["sub_menu_system"] = "1";
    menu_array["sub_menu_banner"] = "1";
    menu_array["sub_menu_customer"] = "1";
    menu_array["sub_menu_administration"] = "1";
    
    var navi_cookie = document.cookie;
    
    if(navi_cookie) {
     var cookieArr = navi_cookie.split(";");
    
     for (var i=0; i<cookieArr.length; i++) {
     menu_array[cookieArr[i].split("=")[0]] = cookieArr[i].split("=")[1];
     }
    
     show_sub_menu("system", 3);
     show_sub_menu("banner", 5);
     show_sub_menu("customer", 3);
     show_sub_menu("administration", 3);
    }
    else {
     document.cookie = "sub_menu_system=1;";
     document.cookie = "sub_menu_banner=1;";
     document.cookie = "sub_menu_customer=1;";
     document.cookie = "sub_menu_administration=1;";
    }
    
    function show_sub_menu(main_menu, levels) {
     for(var i=1; i<=levels; i++) {
      if(menu_array["sub_menu_"+main_menu] == "0") {
       document.getElementById("sub_menu_"+main_menu+"_"+i).style.visibility = "visible";
       document.getElementById("sub_menu_"+main_menu+"_"+i).style.display = "block";
      }
      else {
       document.getElementById("sub_menu_"+main_menu+"_"+i).style.visibility = "hidden";
       document.getElementById("sub_menu_"+main_menu+"_"+i).style.display = "none";
      }
     }
    
     if(menu_array["sub_menu_"+main_menu] == "0") {
      menu_array["sub_menu_"+main_menu] = "1";
      document.cookie = "sub_menu_"+main_menu+"=1;";
     }
     else {
      menu_array["sub_menu_"+main_menu] = "0";
      document.cookie = "sub_menu_"+main_menu+"=0;";
     }
    }
    Mit
    Code:
    <a onclick="show_sub_menu('system', 3);" style="cursor:pointer;">Menu System</a>
    kann ich OHNE PROBLEME die <li>'s anzeigen und verbergen.
    Doch wenn JavaScript selber mit
    show_sub_menu("system", 3);
    die <li>'s anzuzeigen oder verbergen versucht, dann kommt der fehler:
    Fehler: document.getElementById("sub_menu_" + main_menu + "_" + i) has no properties
    Quelldatei: http://localhost/navigation.js
    Zeile: 36

    Jemand ne Idee?
    Zuletzt geändert von Benny-one; 11.02.2006, 17:35.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

  • #2
    Doch wenn JavaScript selber mit
    show_sub_menu("system", 3);
    die <li>'s anzuzeigen oder verbergen versucht, dann kommt der fehler:
    du meinst sozusagen als standard auf der jeweiligen seite?

    setz den code mal 'möglichst weit nach hinten' ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      *autsch* natürlich! danke Hund
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        Re: [JavaScript] document.getElemenById has no properties - von wegen!

        Original geschrieben von Benny-one
        Code:
        <a onclick="show_sub_menu('system', 3);" style="cursor:pointer;">Menu System</a>
        Warum benutzt du hier ein a - wenn du überhaupt nichts zu verlinken hast?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          weil ich dachte, das man das nehmen sollte, wenn eine Linkaktion ausgeführt werden soll.
          Ich sollte wohl eher das onClick in mein <span> einsetzen, oder?
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            um das problem nochmal aufgreifen zu wollen:

            ich habe auch schon öfters das problem gehabt, dass ich den js-teil (wie derhund auch schon meinte) möglichst weit nach hinten schieben musste, damit das ganze funktioniert. mich würde mal interessieren warum?? habe auch in anderen scripten den js teil möglichst weit oben oder lasse es reinladen und ich bekomme nicht die fehlermeldung.

            grüße
            mfg

            Kommentar


            • #7
              Weil du nicht auf HTML-Elemente zugreifen kannst, bevor sie existieren - und das ist nun mal erst der Fall, nachdem der Browser den HTML-Code schon (teilweise) geparst und intern einen Dokumentenbaum daraus aufgebaut hat.


              Per onLoad zu reagieren ist natürlich idR. die sauberere Möglichkeit, anstatt die Script-Blöcke einfach irgendwo ins Dokument einzustreuen.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von hall
                mich würde mal interessieren warum??
                ganz einfach: weil das element zum zeitpunkt vom JavaScript Code noch nicht zur Verfügung steht ;-)

                EDIT:
                grr wahsaga!
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar

                Lädt...
                X