Gerd Gruber: nochmals Unterschied firefox und IExplorer

Hallo Leute,

ich muss euch leider nochmal nerven.
Es wurde mir vorhin so optimal geholfen, dass ich es nochmals wage, hier eine Frage zu stellen.
Die Beispielseite unten funktioniert wieder mit dem firefox einwandfrei, mit dem IE leider nicht.
Die Seite erzeugt einen link. Beim erzeugen dieses Links, gebe ich ein onClick-Attribut an, in der ich als Werte ein javascript-Funktion setze. Klickt man auf den link, wird unter firefox ein der Text "es hat geklappt" angezeigt. Unter dem IE passiert leider nix.
Eigentlich wieder diesselbe Frage wie bei meiner letzten.
Wie kann ich dies umgehen, damit auch der IE, dass onclick-Attribut versteht und dementsprechen danach reagiert?

vielen Dank im voraus

Gerd

Beispielseite:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
</head>
<script language="JavaScript" type="text/javascript">
<!--
function anzeigen(){
    alert("es klappt!!");
}

function test() {
    var newDIV = document.createElement("div");
    var Ausrichtung1 = document.createAttribute("id");
    Ausrichtung1.nodeValue = 'Layer1';
    var divid=Ausrichtung1.nodeValue;
    newDIV.setAttributeNode(Ausrichtung1);
    newDIV.style.position = 'absolute';
    newDIV.style.width = '93px';
    newDIV.style.height = '94px';
    newDIV.style.zIndex = '1';
    newDIV.style.left = '154px';
    newDIV.style.top = '90px';
    newDIV.style.visibility= 'visible';
    document.getElementsByTagName('body')[0].appendChild(newDIV)

var newa = document.createElement("a");
    newa.href='javascript:;';
    var Ausrichtung1 = document.createAttribute("href");
    Ausrichtung1.nodeValue = 'javascript:;';
    newa.setAttributeNode(Ausrichtung1);
    var Ausrichtung6 = document.createAttribute("id");
    Ausrichtung6.nodeValue ='a1';
    var aid=Ausrichtung6.nodeValue;
    newa.setAttributeNode(Ausrichtung6);
    var Ausrichtung1 = document.createAttribute("onclick");
    Ausrichtung1.nodeValue = 'anzeigen();';
    newa.setAttributeNode(Ausrichtung1);
    document.getElementById(divid).appendChild(newa);

var newtextlink = document.createTextNode('test');
    document.getElementById(aid).appendChild(newtextlink);
}
//-->
</script>
<body>
<script language="JavaScript" type="text/javascript">
<!--
    test();
//-->
</script>
</body>
</html>

  1. Hallo,

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    Die XML-Deklaration mit Kodierungsangabe (<?xml version="1.0" encoding="iso-8859-1" ?>) fehlt. Das Dokument ist sonst für sich genommen kein gültiges XML (für XML gilt die Standardkodierung UTF-8).

    function test() {
        var newDIV = document.createElement("div");
        var Ausrichtung1 = document.createAttribute("id");

    Benutze doch der Einfachheit halber setAttribute().

    newDIV.style.position = 'absolute';

    Layoutinformationen solltest du im Stylesheet unterbringen.

    document.getElementsByTagName('body')[0].appendChild(newDIV)

    Statt document.getElementsByTagName('body')[0] einfach kürzer und performanter document.body.

    var newa = document.createElement("a");
        newa.href='javascript:;';

    Letztendlich wenig sinnig. Entweder man notiert einen funktionsfähigen Hyperlink und fügt JavaScript-Logik hinzu oder man notiert direkt href="javascript:anzeige()".

    var Ausrichtung1 = document.createAttribute("onclick");
        Ausrichtung1.nodeValue = 'anzeigen();';
        newa.setAttributeNode(Ausrichtung1);

    Notiere einfach:
    newa.onclick = anzeigen;

    <script language="JavaScript" type="text/javascript">
    <!--
        test();
    //-->
    </script>

    Das language-Attribute ist veraltet und unnötig.
    In XHTML-Dokumenten solltest du keine Kommentare verwenden, um den Inhalt von script-Elementen zu verstecken. http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style

    Mathias

    1. vielen dank für die hilfe.

      Mein Fehler war ich habe immer versucht
      newa.onclick = 'anzeigen()';
      anstatt
      newa.onclick = anzeigen;
      zu schreiben.
      Die anderen Hilfshinweise nehme ich sehr dankbar an; bis auf den Stylesheet hinweis. Da diese in meiner Anwendung sehr dynamisch erzeugt werden, hat es wohl keinen Sinn, dies in Style-sheet dateien zu packen.

      Vielen Dank nochmal für die rasche, sehr kompettente Antwort.

    2. hi,

      var newa = document.createElement("a");
          newa.href='javascript:;';

      Letztendlich wenig sinnig. Entweder man notiert einen funktionsfähigen Hyperlink und fügt JavaScript-Logik hinzu oder man notiert direkt href="javascript:anzeige()".

      Oder man nutzt überhaupt keinen Link, wenn es auch kein "echtes" Linkziel gibt.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    var newa = document.createElement("a");
        newa.href='javascript:;';

    var txt    =  document.createTextNode("lala");
        var a      =  document.createElement("a");
            a.href = " #";
            a.onclick =  function() {alert("passt");return false;}
            a.appendChild (txt);
            document.getElementById([DEINE ID]).appendChild(a);

    Gruesse, Joachim

    --
    Am Ende wird alles gut.