ThomasLa: <optgroup> mittels JavaScript löschen

Hallo,

Frage in Kurzform:
kann man einen <optgroup>-Tag mittels JavaScript entfernen?

Frage in Langform:
Ich hab ein <select>-Auswahlfeld mit vielen Einträgen. Je nach Auswahl in einem anderen <select>-Feld will ich aber nur mehr bestimmte Möglichkeiten anzeigen.
Mittels JavaScript leere ich alle <option>'s aus und schreibe sie neu:
document.formular.Datum.options[i] = null;
und
document.formular.Datum.options[i] = new Option('1.1.2007');
Dadurch werden zwar die <option>'s gelöscht, aber die <optgroup>'s bleiben stehen :-(

Das einzige, was ich bis jetzt gefunden habe, ist:
document.getElementById('NameOptgroup').label ='';
Dadurch bleibt aber eine leere Zeile im Auswahlfeld zurück (=die Optionsgruppe ohne Beschriftung).

Mittels createElement() kann man ja neue Tags erzeugen, aber gibt's denn keine Möglichkeit, wie man vorhandene löschen kann?

Danke!!

  1. Hallo ThomasLa,

    Mittels createElement() kann man ja neue Tags erzeugen, aber gibt's denn keine Möglichkeit, wie man vorhandene löschen kann?

    Mit removeChild() kannst Du Elemente entfernen.

    Mit freundlichem Gruß
    Micha

    --
    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
    1. Danke!!

      Hab das Ganze gleich ein bisschen erforscht (falls es sonst noch jemanden interessiert ;-)

      Ich sehe 2 Möglichkeiten - beide haben Schwächen:
      Ausgangssituation:

      <select id="select"><optgroup label="Optionsgruppe">  <!-- Zwischen den Tags darf kein Abstand sein, sonst ist dieses Leerzeichen das firstChild !-->  
      <option>Eins</option>  
      <option>Zwei</option>  
      </optgroup></select>  <!-- hier auch kein Abstand !--> 
      

      var Knoten = document.getElementById('select').firstChild;
      document.getElementById('select').removeChild(Knoten);

      Funktioniert in IE&Firefox, aber nicht in Opera.  
        
      2) ~~~JavaScript
      for (i= document.getElementById('select').length-1 ; i>=0 ; i--) { // Löschen von unten beginnend, da nach jedem Löschvorgang die Zeilen neu numeriert werden  
      document.getElementById('select').options[i] = null;  
      }
      

      Funktioniert in Opera perfekt; in IE&Firefox bleibt eine leere <optgroup> zurück.

      Wenn man diese beiden Methoden kombiniert, könnte es irgendwie gelingen, dass es in allen Browsern funktioniert :-)

      1. Hallo ThomasLa,

        Danke!!

        Hab das Ganze gleich ein bisschen erforscht (falls es sonst noch jemanden interessiert ;-)

        Ich hätte erwartet, das Du es so (in der Art) versuchst:

          
        function removeOptgroup(number) {  
         var el = document.getElementsByTagName("optgroup")[number];  
         el.parentNode.removeChild(el);  
         return false;  
        }  
        
        

        Mit Opera geht es aber auch nicht, wird aber ein Bug sein, vermute ich. Sowohl die 8.5er Reihe als auch die 9b kann damit nichts anfangen. Der 8.5er mach optisch gar nichts. Wenn man aber ein paar mal (sprich min. drei mal) auf Entfernen klickt, kommt eine Fehlermeldung. Die Elemente sind also weg und beim dritten Klick kann er es nicht mehr entfernen; die Anzeige wird also nicht neue generiert. Die 9er Reihe scheint ein ähnliches Problem zu haben.

        Vielleicht schaut sich das einer nochmal an hier.

        Mit freundlichem Gruß
        Micha

        --
        LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
        1. Hallo derletztekick.

          Mit Opera geht es aber auch nicht, wird aber ein Bug sein, vermute ich. Sowohl die 8.5er Reihe als auch die 9b kann damit nichts anfangen.

          Welche Beta? Bei meiner Beta 2 gibt es keine Probleme; das jeweilige optgroup-Element wird optisch nachweislich aus dem select-Element entfernt.

          Einen schönen Montag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
          1. Hallo Ashura,

            Welche Beta?

            Version 9.00 Beta
            Build 8367
            Platform Win32

            Mit freundlichem Gruß
            Micha

            --
            LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
            1. Hallo derletztekick.

              Welche Beta?

              Version 9.00 Beta
              Build 8367
              Platform Win32

              Also Beta 1. Dann dürfte dies mit meiner Beta behoben worden sein.

              Einen schönen Montag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]
              1. Hallo Ashura,

                Dann dürfte dies mit meiner Beta behoben worden sein.

                Nö, wie Du sehen kannst. Ich habe die aktuelle Beta installiert:

                Version 9.00 Beta
                Build 8414
                Platform Win32

                Mit freundlichem Gruß
                Micha

                --
                LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
                1. Hallo derletztekick.

                  Ich habe die aktuelle Beta installiert:

                  Version 9.00 Beta
                  Build 8414

                  Und bei deiner Beta 2 funktioniert dies hier nicht? Auch nicht, nach dem du kurz in den Projektormodus und zurück gewechselt hast?

                  Wie gesagt, gibt es bei mir keine Probleme. Sollte dies wirklich ein plattformspezifisches Problem sein?

                  Einen schönen Montag noch.

                  Gruß, Ashura

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                  [HTML Design Constraints: Logical Markup]
                  1. Hallo Ashura,

                    Und bei deiner Beta 2 funktioniert dies hier nicht? Auch nicht, nach dem du kurz in den Projektormodus und zurück gewechselt hast?

                    Doch, das geht auch in meinem Opera 9b2. Die Frage ist ja eher, ob es auch mit mit Beschriftung bei Dir geht oder ob es so aussieht wie auf dem Screenshot?
                    Was ist bitte der Projektormodus?

                    Wie gesagt, gibt es bei mir keine Probleme. Sollte dies wirklich ein plattformspezifisches Problem sein?

                    K.a. so sieht es bei mir aus und das soll ganz sicher nicht so sein. Funktioniert es bei Dir korrekt?

                    Mit freundlichem Gruß
                    Micha

                    --
                    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
                    1. Hallo derletztekick.

                      Doch, das geht auch in meinem Opera 9b2. Die Frage ist ja eher, ob es auch mit mit Beschriftung bei Dir geht oder ob es so aussieht wie auf dem Screenshot?

                      Ah, gut. Das mit dem label habe ich übersehen.

                      Was ist bitte der Projektormodus?

                      Der Modus, den Opera beim Druck auf [F11] aktiviert. Zu erkennen daran, dass er in diesem Modus Stylesheets für das Medium „projection“ interpretiert.

                      K.a. so sieht es bei mir aus und das soll ganz sicher nicht so sein. Funktioniert es bei Dir korrekt?

                      Bei mir funktioniert es genau wie bei dir.

                      Einen schönen Montag noch.

                      Gruß, Ashura

                      --
                      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                      [HTML Design Constraints: Logical Markup]
                      1. Hallo Ashura,

                        Bei mir funktioniert es genau wie bei dir.

                        Sollte dies wirklich ein plattformspezifisches Problem sein?

                        Das ist es wohl nun nicht aber ein Problem ist es ;)

                        Mit freundlichem Gruß
                        Micha

                        --
                        LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
  2. Hallo Burg,

    ich habe jetzt mal 20 sek. in SelfHTML geschaut und würde sagen das Stvihwort ist: removeChild()

    Liebe Grüße,

    Bernd