Ergebnis 1 bis 6 von 6

[JavaScript] Nicht existente Array-Elemente

  1. #1 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.176
    Code:
                    function allesausblenden(elementname)
    		{
    			for(var i = 0; i < 1000; i++) {
    				document.getElementsByName(elementname)[i].style.display='none';
    				document.getElementsByName('einblenden')[i].style.display='block';
    				document.getElementsByName('ausblenden')[i].style.display='none';
    			}
    		}
    Eben dieses ist eine Funktion, die beim Laden einer Webseite ausgeführt werden soll. Was mir dabei Bauschmerzen bereitet ist die Abbruchbedingung der FOR-Schleife. Ich lasse ihn hier bis 1000 zählen, weil ich relativ sicher bin, das es niemals so viele Elemente geben wird. Im FireFox funktioniert das auch. Dennoch ist mir nicht wohl dabei, Array-Elemente zu bearbeiten die es nicht gibt. Das Problem ist, dass erst zur Laufzeit bekannt ist, wieviele Elemente es denn wirklich gibt.

    Frage: Wie tragisch ist es, dass ich nicht existente Elemente anspreche? Oder wie macht man es besser?
    Lookbehind ist offline

  2. #2 Zitieren
    Ritter Avatar von Delta 38
    Registriert seit
    Nov 2008
    Ort
    Bremen
    Beiträge
    1.251
    Wenn die Größe des Arrays erst zur Laufzeit bestimmt werden kann solltest du eine While-Schleife verwenden. Also sowas in der Art wie:
    Code:
      function allesausblenden(elementname)
    		{
                          var elementCount = document.getElementsByName(elementname).length;
    		      var i=0;
                          while(i < elementCount){ 
    				document.getElementsByName(elementname)[i].style.display='none';
    				document.getElementsByName('einblenden')[i].style.display='block';
    				document.getElementsByName('ausblenden')[i].style.display='none';
                          
                           i++;
    		       }
    		}
    Delta 38 ist offline

  3. #3 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.176
    Danke, das mit .length war der entscheidende Hinweis! Worx
    Lookbehind ist offline

  4. #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
    Was spricht denn dagegen, eine For-Schleife zu benutzen, wenn die Länge zur Laufzeit bekannt ist?
    Lehona ist offline

  5. #5 Zitieren
    Ritter Avatar von Delta 38
    Registriert seit
    Nov 2008
    Ort
    Bremen
    Beiträge
    1.251
    Im Prinzip gar nichts. Ich bin auch gerade am rätseln wieso ich das vorgeschlagen hab . Im Prinzip kannst du beides nehmen, ich hab den Unterschied da noch nie so richtig verstanden (gut, die Vorschleife wird n-mal durchlaufen und die while eben solange, bis die Abbruchbedingung erfüllt ist). Da war aber mal irgendwas in Java wo der Unterschied wichtig war ...
    Delta 38 ist offline

  6. #6 Zitieren
    Mythos Avatar von Pyrokar
    Registriert seit
    May 2004
    Ort
    ..... hihihähähä hier gibt es Wände und wenn ich dagegen Lauf prall ich ab, wie ein Flummi..... hihihähähääähääääää
    Beiträge
    8.115
    Es ist völlig egal, while und for sind äquivalent. For bietet eine bequeme Möglichkeit eine Laufvariable im Schleifenkopf mitzuziehen, welche man bei while - wie man ja sieht, zusätzlich vorher initialisieren und im Rumpf inkrementieren muss. Ansonsten ist es völlig Wurst ob for oder while - auch in Java. Vielleicht meintest du do-while? Da wird der Rumpf ja mindestens einmal ausgeführt und die Bedingung erst danach geprüft.
    [Bild: gg_schuetzen_ani.gif] | ~ DauJones ~ | ~ Klopfers-Web ~ | ~ German Bash ~ |
    Die meisten und schlimmsten Übel, die der Mensch dem Menschen zugefügt hat, entsprangen dem felsenfesten Glauben an die Richtigkeit falscher Überzeugungen.
    Bertrand Russell
    Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat. anonym
    Pyrokar ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •