Christoph: innerHTML macht irgendwas

Ich habe ein kleines Problem
Ich verstehe nicht ganz wie das mit dem innerHTML abläuft
Jeder Browser agiert anders.

Ich schildere mal mein Problem

Ich habe

<select size="7" name="allvoks" id="allvoks" onClick="show(this.value)" width="200">
<option value="no" disabled>--------</option>
</select>

Hier wird nach jedem Eintrag ein OPTION hinzugefügt

var neuEintrag = new Option(txt,iid,false,false); // Eintrag in SELECT
document.getElementById("allvoks").options[document.getElementById("allvoks").length] = neuEintrag;

Ich möchte einen Eintrag löschen
Er soll auch aus dem SELECT gelöscht warden

Ich suche ihn und ersetze ihn mit nichts

Dann habe ich mir mit einem ALERT ausgegeben wie der neue inhalt aussieht.
Er sieht genau so aus wie er sein sollte - das eine OPTION ist weg - so sollte es sein.

Doch wenn ich nun mit

....innerHTML = new String(inhalt);

Und mir danach den Inhalt des SELECTs ausgebe

Ist beim IE
Das erste <OPTION> weg
Also nur noch -----</OPTION>.

Bei Opera funktioniert alles

Bei Mozilla Firebird 0.7
Verschwinden alle TAGs als wäre es innerText und nicht innerHTML

Ich verstehe das nicht

Christoph aus Wien

  1. Ich habe ein kleines Problem
    Ich verstehe nicht ganz wie das mit dem innerHTML abläuft
    Jeder Browser agiert anders.

    du beschreibst den Inhalt eines Elementes neu und es gibt Browser denen eine gültige Syntax egal ist.

    var neuEintrag = new Option(txt,iid,false,false); // Eintrag in SELECT
    document.getElementById("allvoks").options[document.getElementById("allvoks").length] = neuEintrag;

    das ist soweit ok, wobei ich die document.forms[] verwenden würde da es schneller und rückwärtskompatibel ist.

    Ich suche ihn und ersetze ihn mit nichts

    Dann habe ich mir mit einem ALERT ausgegeben wie der neue inhalt aussieht.
    Er sieht genau so aus wie er sein sollte - das eine OPTION ist weg - so sollte es sein.

    ....innerHTML = new String(inhalt);

    die Frage ist, was steht in inhalt?

    Ist beim IE
    Das erste <OPTION> weg
    Also nur noch -----</OPTION>.

    ich nehme an es sthe in inahlt nur '-----</OPTION>'?

    Bei Opera funktioniert alles

    soweit ich weiß fügt Opera den Inhalt fälschlicherweise hinzu.

    Bei Mozilla Firebird 0.7
    Verschwinden alle TAGs als wäre es innerText und nicht innerHTML

    Ich vermute es ist kein gültiges HTML was du mit innerHTML ersetzt.

    Ich verstehe das nicht

    Für alles gibt es eine Erklärung ;-)

    Struppi.

    1. das ist soweit ok, wobei ich die document.forms[] verwenden würde da es schneller und rückwärtskompatibel ist.

      gut das werde ich ändern

      Ich suche ihn und ersetze ihn mit nichts

      Dann habe ich mir mit einem ALERT ausgegeben wie der neue inhalt aussieht.
      Er sieht genau so aus wie er sein sollte - das eine OPTION ist weg - so sollte es sein.

      ....innerHTML = new String(inhalt);

      die Frage ist, was steht in inhalt?

      in inhalt steht das was ich mit innerHTML ausgelesen habe, also mehrere OPTION Tags wobei ich nun schon eines rausgegeben habe und der ganze inhalt ist toLowerCase()
      also inhalt ist zum Beispiel "<option value="no" disabled>--------</option><option value="2">hello - hallo</option><option value="3">yes - ja</option>"

      Ist beim IE
      Das erste <OPTION> weg
      Also nur noch -----</OPTION>.

      ich nehme an es sthe in inahlt nur '-----</OPTION>'?

      ja also '------</OPTION><OPTION value="2>hello - hallo</OPTION>....

      Bei Opera funktioniert alles

      soweit ich weiß fügt Opera den Inhalt fälschlicherweise hinzu.

      Bei Mozilla Firebird 0.7
      Verschwinden alle TAGs als wäre es innerText und nicht innerHTML

      Ich vermute es ist kein gültiges HTML was du mit innerHTML ersetzt.

      denke ich nicht

      Ich verstehe das nicht

      Für alles gibt es eine Erklärung ;-)

      leider

      Struppi.

      Christoph aus Wien

  2. Ich habe ein kleines Problem

    stimmt! Du versuchst eine Lösung mit innerHTML. Meiner Meinug schießt Du Dir dabei von hinten durch die Brust ins Auge. Mit DOM-Methoden sollte das beschriebene Problem einfacher zu lösen sein.

    Gruß
    Avalon