Radiobuttons per Javascript hinzufügen (Problem im IE)
ds2k5
- javascript
hallo Leute,
ich baue zurzeit ein kleines Tool in JavaScript, das Daten aus einer XML datei ausliest und verschiedene Sachen dazu dynamisch darstellt, alles klappt zwar nur taucht auf einmal ein ziemlich komischer Fehler im Internet Explorer auf. Ich habe nämlich am Anfang in der HTML Datei nur ein paar Elemente, die ich später mittels JS mit weiteren Elementen befülle. Dazu gehören auch 5 Gruppen mit je 5 Radiobuttons. Diese werden zwar dargestellt doch man kann sie im Internet Explorer nicht auswählen, heißt: man kann draufklicken doch es erscheint kein Punkt in der Mitte (wie es ja normal beim Auswählen sein sollte). Im Firefox hingegen funktioniert dies problemlos.
Nun habe ich ein neues Dokument gemacht indem ich ein paar Radiobuttons gleich in HTML reingeschrieben habe und diese funktieren.
Hier die HTML und JS Dateien in verkürzter Form (diese funktionieren im IE so nicht!):
HTML:
<html>
<head>
...
</head>
<body onload="fill();">
<form action="#" method="post" id="form1"
<table>
<tr id="row1">
<tr id="row2">
<tr id="row3">
</table>
</form>
</body>
</html>
JS:
function rbttn(type, id)
{
var rbttn = document.createElement("input");
rbttn.type = "radio";
rbttn.id = type + id;
rbttn.name = "rbttn" + id;
rbttn.value = type + id;
return rbttn;
}
function fill()
{
var row1 = document.getElementById("row1");
var row2 = document.getElementById("row2");
var row3 = document.getElementById("row3");
var cell1 = document.createElement("td");
types = new Array("typ1", "typ2", "typ3", "typ4", "typ5")
for(var i = 0; i < types.length; i++)
{
cell1.appendChild(rbttn(types[i], 0));
}
row1.appendChild(cell1);
}
-----------------------------------------------------
dies wäre z.b. für die erste fünfer Gruppe. Die anderen mache ich mit einer Schleife.
Hoffentlich kann mir jemand helfen, denn auf die Buttons kann ich nicht verzichten und fest in der HTML will ich sie eigentlich auch nicht, sonst müsste ich mir selber welche schreiben ...
Link kann ich euch leider nicht geben da alles bei mir lokal läuft.
Hallo!
Der IE hat große Probleme mit createElement. Ich umgehe dieses Problem mit innerHTML. Ist zwar nicht so elegant, aber IMHO die einfachste Lösung.
ciao, ww
Hallo!
Der IE hat große Probleme mit createElement. Ich umgehe dieses Problem mit innerHTML. Ist zwar nicht so elegant, aber IMHO die einfachste Lösung.
ciao, ww
hallo,
genau innerHTML würde bei mir leider nicht gehen da alles in einer Tabelle ist und der IE keine Tabellenstrukturen per innerHTML verändern kann, für ihn ist innerHTML dann sozusagen nur "readonly", hatte versucht mit innerHTML inhalte zu löschen daher weiß ich das es nicht geht, musste ich später also mit removeChild machen und es geht
createElement funktioniert eigentlich auch, da ja mein ganzes Tool damit "erstellt" wird, nur setAttribute mag der IE gar nicht
Hi there,
genau innerHTML würde bei mir leider nicht gehen da alles in einer Tabelle ist und der IE keine Tabellenstrukturen per innerHTML verändern kann [...]
Warum baust Du in die <td>s nicht einfach <span>s ein, denen Du die ID gibst? Ist vielleicht nicht elegant, aber es funktioniert...
Hi there,
genau innerHTML würde bei mir leider nicht gehen da alles in einer Tabelle ist und der IE keine Tabellenstrukturen per innerHTML verändern kann [...]
Warum baust Du in die <td>s nicht einfach <span>s ein, denen Du die »» ID gibst? Ist vielleicht nicht elegant, aber es funktioniert...
ich glaube nicht dass es helfen würde, es liegt denke ich eher daran dass die buttons nicht als Teil des Forms definiert sind (oder so was in die richtung) :/
außerdem will ich eigentlich nicht so gerne mit innerHTML arbeiten, trotzdem danke für die tipps
Hallo,
war da nicht etwas mit dem <tbody>-Element? http://de.selfhtml.org/html/tabellen/aufbau.htm#kopf_koerper_fuss@title=tbody
meine gelesen zu haben, dass der IE nicht drauf verzichten will. (?)
Hallo,
war da nicht etwas mit dem <tbody>-Element? http://de.selfhtml.org/html/tabellen/aufbau.htm#kopf_koerper_fuss@title=tbody
meine gelesen zu haben, dass der IE nicht drauf verzichten will. (?)
jaja, das stimmt schon, das braucht man um mit createElement die strukur verändern zu können, doch mit innerHTML kann man es immernoch nicht tun
naja hab jetzt mein problem durch festes reinschreiben in der HTML gelöst
Hi,
var rbttn = document.createElement("input");
rbttn.name = "rbttn" + id;
Damit ist der IE hoffnungslos überfordert, siehe http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/name_2.asp, 3. Absatz bei "Remarks".
cu,
Andreas