Marc: Firefox top, im IE geht nichts...

Hallo zusammen,

ich programmiere gerade eine Homepage, meine Javascript läuft im Firafox auch einwandfrei, doch im IE wird gar nichts angezeigt...

<script type="text/javascript">
  <!--
 var a = "<div class='stuetzen'>"+
  "<img src='innen2.jpg' alt='i2' border='0'>"+
  "</div>"+

"<div class='text'>"+
  "<P><B>Abstand zur Wand: &nbsp; <INPUT TYPE='text' NAME='Abstand' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<BR>"+
  "<P><B>Format der St&uuml;tzen: &nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='rund'>rund&nbsp;&nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='quadratisch'>quadratisch</B></P>"+
  "</div>";
 var b = "<div class='stuetzen'>"+
  "<img src='innen4.jpg' alt='i4' border='0'>"+
  "</div>"+

"<div class='text'>"+
  "<P><B>Abstand z0 zu z1: &nbsp; <INPUT TYPE='text' NAME='z0z1' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<P><B>Abstand z0 zu z2: &nbsp; <INPUT TYPE='text' NAME='z0z2' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<BR>"+
  "<P><B>Format der St&uuml;tzen: &nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='rund'>rund&nbsp;&nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='quadratisch'>quadratisch</B></P>"+
  "</div>";
 var c = "<div class='stuetzen'>"+
  "<img src='aussen2.jpg' alt='a2' border='0'>"+
  "</div>"+

"<div class='text'>"+
  "<P><B>Abstand zur Wand: &nbsp; <INPUT TYPE='text' NAME='Abstand' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<BR>"+
  "<P><B>Format der St&uuml;tzen: &nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='rund'>rund&nbsp;&nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='quadratisch'>quadratisch</B></P>"+
  "</div>";
 var d = "<div class='stuetzen'>"+
  "<img src='aussen4.jpg' alt='a4' border='0'>"+
  "</div>"+

"<div class='text'>"+
  "<P><B>Abstand z0 zu z1: &nbsp; <INPUT TYPE='text' NAME='z0z1' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<P><B>Abstand z0 zu z2: &nbsp; <INPUT TYPE='text' NAME='z0z2' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
  "<BR>"+
  "<P><B>Format der St&uuml;tzen: &nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='rund'>rund&nbsp;&nbsp;"+
  "<INPUT TYPE='radio' NAME='Format' VALUE='quadratisch'>quadratisch</B></P>"+
  "</div>";
 var leer = "";

function Aendern1() { alert("hallo"); document.all.Bild.innerHTML = a; }
 function Aendern2() { document.all.Bild.innerHTML = b; }
 function Aendern3() { document.all.Bild.innerHTML = c; }
 function Aendern4() { document.all.Bild.innerHTML = d; }
 function Leer()     { document.all.Bild.innerHTML = leer; }

//-->
 </script>

Der Link is dann auf einen Radiobutton gesetzt:

<INPUT TYPE="radio" NAME="Stuetzen" VALUE="2i" onClick="javascript:Aendern1()">

Weiß jemand warum das nicht funktioniert?
Ich hab durch ausprobieren rausgefunden das er z.B. <div> nicht mag im IE, aber warum?
Muss ich alles umprogrammieren?

Gruß, Marc

  1. Hi,

    function Aendern1() { alert("hallo"); document.all.Bild.innerHTML = a; }

    Das geht im FF? Öfter mal was neues...

    Der Link is dann auf einen Radiobutton gesetzt:

    <INPUT TYPE="radio" NAME="Stuetzen" VALUE="2i" onClick="javascript:Aendern1()">

    Bei Zuweisungen an innerHTML hab ich die Erfahrung gemacht, dass der IE sehr schnell Ärger macht, wenn ihm am zugewiesenen String irgend etwas nicht passt. Welches Element hat den die ID "Bild"?

    Gruß,

    Harlequin

    1. function Aendern1() { alert("hallo"); document.all.Bild.innerHTML = a; }

      Das geht im FF? Öfter mal was neues...

      Ja, document.all wurde vor einigen Versionen eingebaut.
      if(document.all) wird zwar nach wie vor als falsch ausgewertet, aber mit document.all[id] kannst du auf Objekte zugreifen.

      javascript:alert(document.all)

      Struppi.

      1. Hi,

        Ja, document.all wurde vor einigen Versionen eingebaut.
        if(document.all) wird zwar nach wie vor als falsch ausgewertet, aber mit document.all[id] kannst du auf Objekte zugreifen.

        document.all[id] könnt ich ja noch verstehen, aber dass man unbedingte das kaputte document.all.id nachbauen muss find ich krank... Kaum ist man bei PHP von RegisterGlobals weg kommt sowas. Ich sag nur <div id="tags">, führt das eigentlich immernoch zu JS-Fehlern im IE wenn man drucken will?

        Gruß,

        Harlequin

        1. document.all[id] könnt ich ja noch verstehen, aber dass man unbedingte das kaputte document.all.id nachbauen muss find ich krank...

          Das hat nichts mit kaputt zu tun, sondern ist ein ganz normales Verhalten unter JS. Man kann Eigenschaften von Objekten entweder mit dem Indexoperator [] ansprechen oder mit dem Punkt (sofern die Eigenschaften keine Sonderzeichen enthalten ansonsten geht nur ersteres)

          Struppi.

          1. Das hat nichts mit kaputt zu tun, sondern ist ein ganz normales Verhalten unter JS. Man kann Eigenschaften von Objekten entweder mit dem Indexoperator [] ansprechen oder mit dem Punkt (sofern die Eigenschaften keine Sonderzeichen enthalten ansonsten geht nur ersteres)

            ...jetzt wo Du es sagst, stimmt. JavaScript - die einzige Arrayorientierte Programmiersprache, wieso vergess ich das immer wieder ;-)

            Gruß,

            Harlequin

            1. Als kleine Hilfe...

              Im IE wir ein Fehler angezeigt, in Zeile 83, Zeichen 24, das wäre dann folgende Zeile:

              function Aendern1() { document.all.Bild.innerHTML = a; }

              "Unbekannter Laufzeitfehler" meldet er mir!

              1. Hi,

                "Unbekannter Laufzeitfehler" meldet er mir!

                Ja, den kenn ich. Bei mir lag das immer an invalidem HTML, das ich versuchte zuzuweisen. Sind die Tags in dem String korrekt geschachtelt? Evtl. könnte das auch passieren, wenn du Blockelemente (z.B. DIV) in ein Inlineelement (z.B. SPAN) zuweisen willst.

                Gruß,

                Harlequin

    2. Welches Element hat den die ID "Bild"?

      <P id="Bild"></P>

      1. Hallo Marc

        <P id="Bild"></P>

        var a = "<div class='stuetzen'>"+ ...

        Und in <p> haben Divs nichts verloren.

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
  2. Ihr könnt aufhören zu rätzeln, höchsten noch um das Warum *g

    ich habe

    <P id="Bild"></P>

    in

    <div class="stuetzen" id="Bild"></div>

    geändert und die var a folgendermaßen geändert:

    var a = "<img src='innen2.jpg' alt='i2' border='0'>"+
      "<P><B>Abstand zur Wand: &nbsp; <INPUT TYPE='text' NAME='Abstand' SIZE='8' MAXLENGTH='10' VALUE=' m'></B></P>"+
      "<BR>"+
      "<P><B>Format der St&uuml;tzen: &nbsp;"+
      "<INPUT TYPE='radio' NAME='Format' VALUE='rund'>rund&nbsp;&nbsp;"+
      "<INPUT TYPE='radio' NAME='Format' VALUE='quadratisch'>quadratisch</B></P>";

    Jetzt funktioniert es endlich!

    Trotz allem, danke für die Hilfen...

    1. Hi,

      hab deine anderen Antworten zuerst übersehen...

      Ihr könnt aufhören zu rätzeln, höchsten noch um das Warum *g

      ich habe

      <P id="Bild"></P>

      in

      <div class="stuetzen" id="Bild"></div>

      geändert

      Dann lieg ich mit meiner Vermutung wohl doch richtig. Ein <p> darf keine Blockelemente wie <div> enthalten. Der IE scheint an der Stelle extrem streng zu sein, obwohl er sonst jeden möglichen Müll noch interpretiert.

      Gruß,

      Harlequin