<optgroup> mittels JavaScript löschen
ThomasLa
- javascript
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!!
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
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 :-)
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
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
Hallo Ashura,
Welche Beta?
Version 9.00 Beta
Build 8367
Platform Win32
Mit freundlichem Gruß
Micha
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
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
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
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
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
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
Hallo Burg,
ich habe jetzt mal 20 sek. in SelfHTML geschaut und würde sagen das Stvihwort ist: removeChild()
Liebe Grüße,
Bernd