Carsten Pieper: getElementsByName funzt nicht im iE

Beitrag lesen

Hallo Gemeinde!

Ich schreibe gerade ein Terminverwaltungssystem, was zur Zeit bei allen Browsern funktioniert, nur nicht im Internet Explorer.

Die Problematik zu erklären ist sehr schwer, wird aber deutlich, wenn man die Seite ausprobiert und sich den Quellcode anschaut.

Wenn Jemand auf "Der Termin sit mehrtägig" klickt, wird der komplette Datums-Eingabebereich geklont.
Ändert nun jemand den Monat des Enddatums, sollte eigentlich das Anfangsdatum unangetastet bleiben, und die Auswahlbox der Tage des Enddatums aktualisiert werden.

Der Code wird von den anderen Browsern ausgeführt wie er soll. Nur der IE aktualisiert die Tages-Auswahlbox des Anfangstermins.

Der relevante Codeausschnitt:

if(document.getElementsByName("tag").length==2){
 //ist hingegen der Endtermin eingeblendet, greift dieser Code
  for(var i=0;i<=1;i++){
   selTag = document.tvs.tag[i].value;
   selMonat = document.tvs.monat[i].value;
   selJahr = document.tvs.jahr[i].value;
   //Umweg für alle Nicht-IE-Browser
   if (aktJahr < 999){
    aktJahr+=1900;
   }
   //Anpassung des Jahres bei Auswahl eines Monats, der nicht mehr im aktuellen Jahr liegen kann
   if (selMonat < aktMonat && aktJahr == selJahr){
    document.tvs.jahr[i].selectedIndex++;
    selJahr++;
   }
   //Generierung der Auswahlliste für Tage
   switch(selMonat){
    case "1": if (selJahr % 4 == 0) {monatstage=29;} else {monatstage=28;};break;
    case "3": monatstage=30;break;
    case "5": monatstage=30;break;
    case "8": monatstage=30;break;
    case "10": monatstage=30;break;
    default: monatstage=31;break;
   }
   //Löschen der alten Auswahlliste um Overflow zu verhindern
   while(document.getElementsByName("tag")[i].length>0){
    document.getElementsByName("tag")[i].remove(0);
   }
   for(var j=1;j<=monatstage;j++){
    var monatstag = document.createElement("option");
    var beschriftung = document.createTextNode(j);
    monatstag.appendChild(beschriftung);
    monatstag.text = j;
    monatstag.value = j;
    document.getElementsByName("tag")[i].appendChild(monatstag);
   }
   document.getElementsByName("tag")[i].selectedIndex = selTag-1;
  }
 }

Unter der angegebenen Adresse findet Ihr die ganze Seite zum Ausprobieren.

Wenn jemand eine Idee hat, wie ich dem IE auch noch die korrekte Aktualisierung beibringen kann, wäre ich sehr dankbar.

Schönes Wochenende Euch allen,

Carsten