[kde-de] Konqueror und dyn. generierte Radiobuttons
Hinrich Sager
Hinrich.Sager at web.de
Fr Jan 9 14:48:28 CET 2004
Guten Tag
wenn ich mit JavaSkript/DOM eine Gruppe von Radiobuttons erzeuge und
mit Labels versehe, zeigt Konqueror 3.1.4 alle angeklickten Buttons
dauerhaft als selektiert an. Mozilla 1.4.1 macht es dagegen wie
erwartet: Nur der zuletzt angeklickte wird als selektiert markiert.
In de.comp.lang.javascript habe ich schon nachgefragt, aber keine
problemlösende Antwort erhalten.
Ich kann das Verhalten des Konquerors nur "berichtigen", wenn ich auf
jede Form von Beschriftung der Buttons verzichte und ausschließlich
Radiobuttons einem Elternknoten hinzufüge. Nichteinmal reine Textnodes
werden toleriert. Aber Buttons ohne Beschriftung?!
Ich benutze folgende Funktion:
function createRadio(radio_name, value_array, parent_id)
{
var parent_node = document.getElementById(parent_id);
var _element;
var _type;
var _name;
var _id;
var _label;
var _text;
var _line;
var _for;
var _fieldset = document.createElement("fieldset");
for(var i=0; i<value_array.length; ++i){
// Attribute erzeugen und mit Werten füllen.
_type = document.createAttribute("type");
_type.nodeValue = "radio";
_name = document.createAttribute("name");
_name.nodeValue = radio_name;
_value = document.createAttribute("value");
_value.nodeValue = value_array[i];
_id = document.createAttribute("id");
_id.nodeValue = radio_name+"_"+value_array[i];
// Neues input-Element erzeugen und Attributknoten dranhängen.
_element = document.createElement("input");
_element.setAttributeNode(_type);
_element.setAttributeNode(_name);
_element.setAttributeNode(_value);
_element.setAttributeNode(_id);
// Eventhandler hinzufügen
_element.addEventListener("click", machWas, false);
// Label erzeugen und zuordnen (Label-Text = Radio-Value)
_text = document.createTextNode(value_array[i]);
_label = document.createElement("label");
_label.appendChild(_text);
_for = document.createAttribute("for");
_for.nodeValue = _id;
_label.setAttributeNode(_for);
_line = document.createElement("div");
// *Problemzone*
_line.appendChild(_element); // so
_line.appendChild(_label); // gibt's den
_fieldset.appendChild(_line); // Fehler.
// _fieldset.appendChild(_element); // So nicht.
}
if (parent_node.hasChildNodes()) {
parent_node.replaceChild(_fieldset, parent_node.firstChild);
}
else{
parent_node.appendChild(_fieldset);
}
}
Liegt das Problem in der DOM-Implementation des Konqueror bzw. wie muß
ich die Funktion umschreiben, damit auch der Konqueror sie versteht?
Gruß
Hinrich