ds2k5: Radiobuttons per Javascript hinzufügen (Problem im IE)

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.

  1. 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

    --
    Dies ist eine sehr einfache und effektive Sicherheitsstufe, aber nicht perfekt. Denn wenn mehrere User über eine Leitung ins Internet gehen, haben für den Webserver alle User die selbe IP. Und dann wirkt diese Sicherheitsstufe nicht mehr. Aber zumindest könnt ihr demjenigen, der euch die Session-ID geklaut hat, eins in die Fresse hauen.
    http://tut.php-q.net/login.html
    1. 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

      1. 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...

        1. 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

          1. 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. (?)

            --
            Gruß plan_B     *®*´¯`·.¸¸.·
            1. 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

  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.