Mssmar: createELement() unter IE

Hallo,

ich erhalte mit dem folgenden Code unter IE andere bzw. falsche Darstellung.

Unter FFox ist es richtig und es sieht genau so wie es sein sollte aus.

Aber IE hält sich wieder nicht an die Regeln.

Hat Jemand einen Tipp, was ich beim Code ändern könnte, damit es unter IE auch richtig formatiert wird.

Danke und Gruss
Messmar

  
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  
<html>  
<head>  
 <title>Untitled</title>  
 <style>  
   #hyperlinkList {  
    padding:1px 0;  
    font-family:arial;  
    text-decoration:none;  
    font-size:11px;  
    font-weight:bold;  
   }  
  
   #hyperlinkList a:link {  
    padding:0px;  
    font-family:arial;  
    text-decoration:none;  
    font-size:11px;  
    font-weight:bold;  
   }  
  
   a.listLink {  
    text-decoration:none;  
    font-family:arial;  
    font-size:11px;  
    font-weight:bold;  
   }  
  </style>  
</head>  
  
<body>  
 <div id="infoText" title="WWWWWW" style="width:200px;border:1px solid green;">  
   <ul id="hyperlinkUl">  
  
   </ul>  
  </div>  
 <script>  
   var links = new Array(4);  
  
   links["Audi"] = "javascript:showCar('car-audi_1.jpg');imgLayer2();";  
   links["Opel"] = "javascript:showCar('car-opel_1.jpg');imgLayer2();";  
   links["Honda"] = "javascript:showCar('car-honda_1.jpg');imgLayer2();";  
   links["VW"] = "javascript:showCar('car-vw_1.jpg');imgLayer2();";  
  
   for(var e in links)  {  
    var newLi = document.createElement("li");  
    var newA = document.createElement("a");  
  
    newLi.id="hyperlinkList";  
    newA.id=e;  
    newA.className="listLink";  
  
    newA.href=links[e];  
    newA.innerHTML=e;  
  
    document.getElementById("hyperlinkUl").appendChild(newLi);  
    document.getElementById("hyperlinkList").appendChild(newA);  
  
   }  
 </script>  
  
</body>  
</html>  
  
  

  1. Hallo Mssmar,

    Aber IE hält sich wieder nicht an die Regeln.

    Du aber auch nicht: IDs müssen eindeutig sein. Du gibst aber allen LI und A die gleiche ID. Ich glaube, hier wären Klassen besser.

    Gruß, Jürgen

    1. Hallo Jürgen,

      [...]Du gibst aber allen LI und A die gleiche ID. Ich glaube, hier wären Klassen besser.

      Die A nicht. Da vergebe ich eindeutige IDs:
      newA.id=e;

      Bei den Listen, hast du Recht. Da bekommen Sie alle die gleiche ID.
      Ist aber wie Ihr Schreibt, natürlich falsch ;-( :

      newLi.id="hyperlinkList";

      Mit den eindeutigen Listen-IDs funkt es.

      Danke und Gruss
      Messmar

  2. Hell-O!

    ich erhalte mit dem folgenden Code unter IE andere bzw. falsche Darstellung.

    Zur Info für potenzielle Helfer:
    Im Firefox wird eine Liste der Automarken erzeugt, während der IE aus allen Automarken einen Listenpunkt macht.

    Unter FFox ist es richtig und es sieht genau so wie es sein sollte aus.

    Hier ist der Firefox zu Unrecht fehlertoleranter als er sollte.

    Aber IE hält sich wieder nicht an die Regeln.

    Doch, das tut er, denn er hängt an das erste Element mit der ID "hyperLinkList" das neue A-Element dran.

    Hat Jemand einen Tipp, was ich beim Code ändern könnte, damit es unter IE auch richtig formatiert wird.

    Erzeuge nicht 4 Listenpunkte mit der gleichen ID (Regelverstoß!), sondern vergib eine eindeutige ID für jeden Listenpunkt:

      
    for(var e in links)  {  
      var newLi = document.createElement("li");  
      var newA = document.createElement("a");  
      var newID =  "hyperlinkList_" + e;  
      newLi.id = newID;  
      newA.id=e;  
      newA.className="listLink";  
      newA.href=links[e];  
      newA.innerHTML=e;  
      document.getElementById("hyperlinkUl").appendChild(newLi);  
      document.getElementById(newID).appendChild(newA);  
    }
    

    So klappt es.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.