Jojo: Attribute Name im IE

Hallo Leute

Ich hab mal wieder n Problem im Bezug Internet Explorer und JavaScript.
Folgendes:
Ich habe eine Simple HTML-Seite:

  
<table border="1" cellpadding="0" cellspacing="0" align="center">  
 <tbody id="table_test">  
 <tr id="row_1_">  
  <td>  
   <input type="radio" name="test_1_" value="leer" checked>  
   <input type="radio" name="test_1_" value="voll">  
  </td>  
 </tr>  
 </tbody>  
</table>  
  
<script language="javascript" type="text/javascript">  
<!--//
~~~~~~javascript
  
  
// Hier Clone ich mir erst mal die Zeile  
temp = document.getElementById("row_1_").cloneNode(true);  
  
// Dann rufe ich die Namenänderungsfunktion auf  
temp2 = change_names(2, temp);  
// Hier tu ich einfach mal per Hand die ID der Zeile ändern  
temp2.id = "row_2_";  
  
// Und dann noch in den tbody reinbauen  
document.getElementById("table_test").appendChild(temp2);  
  
function change_names (next_id, current_node)  
{  
 // Funktion für jedes eigene Kind aufrufen (rekursiv)  
 for (var i = 0; i < current_node.childNodes.length; i++) {  
  try { current_node.replaceChild(change_names(next_id, current_node.childNodes[i]), current_node.childNodes[i]); }  
  catch (e) {}  
 }  
 // Wenn ich einen Textknoten habe, dann muss ich nix mehr damit tun --> return  
 if (typeof(current_node.data) == "string") {  
  return current_node;  
 }  
 // Name ändern  
 if (current_node.getAttribute("name")) {  
  current_name = current_node.getAttribute("name");  
  current_node.setAttribute("name", current_name.replace(/_\d*_/, "_" + next_id + "_"));  
 }  
  
 return current_node;  
}  
  
//-->  
</script>  

So das war mal der Testcode
Wenn ich vor dem Clonen der Zeile auf die Radiobuttons klicke ist es ganz normal... nur einen von beiden

Wenn dann geklont wurde, dann ist das leider nur im IE nicht so schön...
In Allen Browsern gibt es dann sozusagen 2 Paare von radios... nur der IE is irgendwie zu dumm, dass er die radios trennt. Man kann also nur einen von den Vieren anklicken :-/

---> Ihr könnt es ja selbst versuchen ;)

Wie könnte ich denn das schaffen, dass der IE das brav macht ?

  1. Hi,

    ich werfe da mal meine etwas laienhafte Betrachtung in den Raum: Was verstehst du unter einem Klon, eine identische Sache oder eine die so ähnlich ist? Wenn sie identisch ist, dann sollten auch die enthaltenen Radios identisch sein, also den selben Namen haben, damit fallen sie in die selbe Gruppe...
    Der Ausweg? Manuell kopieren, d.h. mit createElement anlegen.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Wenn sie identisch ist, dann sollten auch die enthaltenen Radios identisch sein, also den selben Namen haben, damit fallen sie in die selbe Gruppe...
      Der Ausweg? Manuell kopieren, d.h. mit createElement anlegen.

      Ich habe doch deswegen die Funktion programmiert, die die Namen ändert !

      ---> Jeder Browser kann die Geschichte... nur IE nicht !!

      btw:
      cloneNode Klont ein Objekt komplett (ohne Referenz!)

      1. Hi,

        autsch, sorry, ab dem clone hab ich mir keine weiteren Gedanken mehr um die Funktion gemacht...

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. ...hast du mal ausprobiert, per alert o.ä., was
          // Funktion für jedes eigene Kind aufrufen (rekursiv)
           for (var i = 0; i < current_node.childNodes.length; i++) {
            try { current_node.replaceChild(change_names(next_id, current_node.childNodes[i]), current_node.childNodes[i]); }
            catch (e) {}
           }
          dieser Block für Knoten durchläuft? Der startet ja eigentlich bei dem td, vielleicht dringt er nicht bis zu den Radios vor...

          MfG
          Rouven

          --
          -------------------
          ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
          1. ...hast du mal ausprobiert, per alert o.ä., was
            dieser Block für Knoten durchläuft? Der startet ja eigentlich bei dem td, vielleicht dringt er nicht bis zu den Radios vor...

            Na sicher...

            _Alle_ Browser (IE, FF, Moz, N, O) gehen ALLE Knoten durch und ersetzen jeden Name richtig ... Ebenfalls alle Browser (ausser IE :-/) schaffen es dann 2 Gruppen von Radios zu bilden

            Du kannst ja mal die seite nehmen, einfach speichern und mal selbst ausprobieren. Du wirst sehen, dass es funktioniert.
            Der IE macht sogar das geklonte hin, nur eben die versknüpfung nicht richtig