2009-03-09 19 views
1

Ich arbeite daran, Inhalt einer Webseite mit Javascript hinzuzufügen. Das Problem ist, dass das CSS in IE (7) nicht auf den dynamisch hinzugefügten Inhalt zutrifft.css für dynamischen Inhalt

Hier ist ein Beispiel-Dokument ..

<html> 
<head> 
    <style type="text/css"> 
    p.foo { color: #FF4400 ; background-color: #000000 } 
    p.bar { color: #FF0000 ; background-color: #000000 } 
    </style> 
    <script type="text/javascript"> 
     function add() { 
      var node = document.createElement("p"); 
      node.setAttribute("class", "bar"); 
      node.appendChild(document.createTextNode("New Content")); 
      document.body.appendChild(node); 
     }; 
    </script> 
</head> 
<body onload="add()"> 
     <p class="bar">bar</p> 
     <p class="foo">foo</p> 
</body> 
</html> 

In FF, die neu hinzugefügte ‚neue Inhalte‘ Absatz hat den Stil angewendet, aber in IE, es funktioniert nicht. Das scheint etwas offensichtlich genug zu sein, dass es leicht durchsuchbar sein sollte, aber einige offensichtliche Fragen gaben mir nichts.

Also was ist der Trick?

Antwort

9

Warum nicht einen Rahmen verwenden, wie jQuery, MooTools, extJs, Dojo, Prototype usw., die alle diese Probleme bereits gelöst hat?

Aber wenn Sie darauf bestehen, es selbst zu tun, versuchen Sie es mit:

function add() { 
     var node = document.createElement("p"); 
     node.className = 'bar'; // <- use in leu of setAttribute() 
     node.appendChild(document.createTextNode("New Content")); 
     document.body.appendChild(node); 
    }; 
+0

Könnten Sie bitte den Namen des Rahmens (n) teilen, die bereits alle diese Probleme gelöst? – overslacked

+0

jQuery ist eins. Ich bin mir sicher, YUI, Dojo, Mootools und Prototype haben es auch gelöst. –

+0

Fast jedes JavaScript-Framework behandelt Cross-Browser-Probleme wie diese. Ich benutze jQuery - aber Sie könnten auch auf prototype/scriptaculous, mootools, extjs usw. schauen. – tvanfosson

Verwandte Themen