c't 15/07
for (i=0; i<3; i++) {
var radio = document.createElement('input');
radio.type = 'radio';
radio.name = 'radioname';
radio.value = i;
if (i == 1) radio.defaultChecked = true;
document.getElementById('formular').appendChild(radio);
}
Das erzeugt drei Radio-Buttons nach dem Muster <input name="“radioname“" type="“radio“" value="“0“/" /> und hängt sie an ein Element namens formular; der mittlere Button ist ausgewählt.
Beim Aufruf im Internet Explorer scheint das wunderbar zu funktionieren - nur leider lassen sich die Buttons nicht auswählen und damit nicht benutzen. Ein Blick in den DOM Explorer, der in der Internet Explorer Developer Toolbar (siehe Soft-Link) enthalten ist, zeigt rasch die Ursache: Der Explorer akzeptiert das Attribut name nicht. Dieses ist aber notwendig, um die Elemente für die Benutzerauswahl zu gruppieren.
Um die Formularelemente IE-tauglich per Skript zu erzeugen, bleibt nur die Wahl zwischen document.write() oder - etwas eleganter - der proprietären MS-Technik document.all:
var guterbrowser = (document.all)? false : true;
for (i=0; i<3; i++) {
if (guterbrowser) {
// W3C-DOM-Skript, wie oben
} else {
document.all.formular.insertAdjacentHTML ("BeforeEnd", '<input '="'" '')="'')" '/="'/" ((i="=" +="+" 1)?="1)?" :=":" checked name="radioname" type="radio" value="' + i + '" />');
}
}
Das fügt einen String in den HTML-Baum ein, den Internet Explorer (und Opera, der ebenfalls mit document.all umgehen kann) korrekt in den Dokumentenbaum einhängt. Eine Alternative wäre das Einblenden von versteckten Elementen.
(heb)
Version zum Drucken | Per E-Mail versenden | Heft bestellen
Permalink: http://heise.de/-322600
Das aktuelle Heft ist jetzt im Handel erhältlich.
Ältere Artikel können Sie über unser Zeitschriften-Archiv bestellen.