JS Array-Problem bei DOM-Scripting

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

  • JS Array-Problem bei DOM-Scripting

    sitz gerade an ein paar beispielen für dom-scripting und stehe vor folgendem rätsel:
    PHP-Code:
    var config = new Array();
            
    config[0] = new Array();
    config[0]['button'] = 'b_0';
    config[0]['element'] = 'm_0';
    config[0]['num'] = 4;
    config[0]['pos'] = -84;
            
    config[1] = new Array();
    config[1]['button'] = 'b_1';
    config[1]['element'] = 'm_1';
    config[1]['num'] = 6;
    config[1]['pos'] = -144;

    for (
    0config.lengthi++)
    {               
        
    document.getElementById(config[i]['button']).onmouseover = function () 
        {
            
    alert (config[i]['button']);
        }

    wirft folgende fehlermeldung aus: config[i] has no properties. ein einfaches alert ('hallo'); funktioniert. Warum wird im alert nicht der entsprechende wert ausgegeben?
    EDIT:
    ein klein wenig weiter bin schon. ein alert (i) gibt immer 5 aus, was natürlich die fehlermeldung erklärt, aber nicht das ergebnis.


    gruß
    peter
    Zuletzt geändert von Kropff; 23.08.2007, 15:41.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    wo deklarierst du denn i?
    Die Milch bleibt ranzig!

    Kommentar


    • #3
      am i liegt es nicht auch bei
      PHP-Code:
      for (var ...) 
      besteht das problem.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Die Frage ist eher: Wo hat i welchen Wert?

        Nach Beendigung der for-Schleife hat es den Wert 2 (=config.length). Und da die MouseOver-Funktionen erst nach Beendigung der for-Schleife aufgerufen werden, hat es dort auch den Wert 2. Wobei config[2] offensichtlich nicht definiert ist, was die Fehlermeldung erklärt.
        hopka.net!

        Kommentar


        • #5
          hat config denn die länge 6?

          @ hopka ne laut dem code hat i nach durchlaufen der schleife den wert 1
          Die Milch bleibt ranzig!

          Kommentar


          • #6
            Du musst i statisch einbauen, wie Hopka schon sagt, wenn mouseover ausgeführt wird besteht i nicht mehr / nur noch mit dem letzten Wert.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              @ranzigemilch
              sorry, mein original-array ist länger das das beispiel hier.

              @hopka
              das wird es sein. danke für den hinweis.

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Original geschrieben von RanzigeMilch
                @ hopka ne laut dem code hat i nach durchlaufen der schleife den wert 1
                for-Schleife in while-Schleife umgewandelt:
                PHP-Code:
                0;
                while (
                2) {
                    ...
                    
                i++;

                Die Schleife läuft 2 mal durch, also wird i auch 2 mal um eins erhöht.
                Zuletzt geändert von Hopka; 23.08.2007, 16:36.
                hopka.net!

                Kommentar


                • #9
                  wieso läuft da die schleife 2 mal durch?
                  Die Milch bleibt ranzig!

                  Kommentar


                  • #10
                    Weil da eigentlich eine 2 stehen sollte (=content.length).
                    hopka.net!

                    Kommentar

                    Lädt...
                    X