Viennamade: eingebundes JS verwirrt fieldset-Element

Hallo!

Eine xhtml-1.0-strict Seite. Oben im Viewport habe ich eine horziontales Menü. Es ist eine gefloatete Liste, innerhalb der li-Elemente sind verweisende Gifs, die mit JS gehovert werden. Das letzte li-Element ist anders. Es besteht aus einem Formular, welcher seinerseits 2 input-elemente enthält:
Ein input-Element vom Type image, ein input-Element vom Typ Text. Beide stehen innerhalb eines div-Elements.

In aktuellen Browsern wurde das Menü korrekt dargestellt. Jetzt ging ich her und wollte das die beiden input-Elemente umgebende div-Element durch ein fieldset-Element ersetzen.
Im Opera/Mozilla/NN funktionert das wunderbar, nicht im IE, dort hält das fieldset-element nach unten ca. 10px Abstand, dadurch wird die Menüleiste höher als es sein soll.

Jetzt war ich eben dabei, den Quelltext für einen Thread hier zu reduzieren und da ergab sich, daß in dem Moment, wo ich den Verweis auf die externe javascript-Datei rausnehme das Menü auch im IE funktioniert.
Lösche ich <script type="text/javascript" src="js/scripts.js"></script> aus der HTML raus, dann bringt das fieldset-Element das Menü nimmer durcheinander.

Auf der Seite wird nur dieses Script mit onmouseover und onmouseout eigebunden:

function menho(src,bild)
  {
  var x = document.getElementById(src.id).id;
  switch (x)
  {
    case "search":
      src.src = "graphics/" + bild;
      break;
    default:
      var y = x.substr(4) + "gif";
      var img = document.getElementById(y);
      var neu="graphics/" + bild;
      img.src = neu;
      break;
    }
  }

Ich mache mir keinen Reim drauf, ich hoffe Euch ergeht es anders.

Beste Grüße
Viennamade

  1. Hallo wiederum!

    Lösche ich <script type="text/javascript" src="js/scripts.js"></script> aus der HTML raus, dann bringt das fieldset-Element das Menü nimmer durcheinander.

    Jetzt habe ich noch einen "Versuch" gemacht. Ich habe die Zeile <script type .....</script> drinnengelassen aber die Datei "scripts.js" leer gemacht .... ohne Erfolg, das fieldset bringt die Menüleiste nach wie vor durcheinander.
    Nach wie vor ist das Problem behoben, wenn ich <script type .....</script> aus der Datei nehme.

    ?! :-)
    Beste Grüße
    Viennamade

  2. Hi,

    Eine xhtml-1.0-strict Seite.

    Valide?
    Falls ja: URL?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo!

      Danke für Deine Antwort.

      Valide?

      Ja.

      Falls ja: URL?

      Ich habe die Seite jetzt in 2 Versionen wohin geschaufelt:
      1. Mit einer Zeile <script type="text/javascript" src="js/nichtexistentdatei.js"></script>, wobei die js-Datei gar nicht existiert. Trotzdem tritt der Fehler auf, im IE6.0 macht das fieldset-Element die Menüleiste um mehr ein Drittel höher als die gewünschten 45px.
        http://www.fischerbartl.at/test/testmitjs.html
      2. Ohne Verweis auf eine externe js-Datei, dort zeichnet der IE6.0 die Menüleiste wie gewünscht.
        http://www.fischerbartl.at/test/testohnejs.html

      Beste Grüße
      Viennamade

      1. Hi,

        Danke für Deine Antwort.

        Valide?
        Ja.

        Hm. Ist zwar von der DTD her nicht Pflicht, aber von der Beschreibung und DTD aus HTML 4.01 eigentlich schon - gib dem fieldset mal ein legend-Element (als ersten Inhalt). Erstmal mit Text, und wenn es dann klappt, probiere, den Text wegzulassen.

        In HTML 4.01 heißt es:

        <!--
          #PCDATA is to solve the mixed content problem,
          per specification only whitespace is allowed there!
         -->
        <!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- form control group -->

        Hier muß also zuerst #PCDATA kommen, dann genau ein LEGEND-Element, danach beliebig viele flow-Elemente (also inline- oder block-Elemente).

        In XHTML 1.0 strict lautet das dann (was mich etwas überrascht hat, ich dachte, da wäre es genauso definiert):

        <!--
          The fieldset element is used to group form fields.
          Only one legend element should occur in the content
          and if present should only be preceded by whitespace.
        -->
        <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
        <!ATTLIST fieldset
          %attrs;
          >

        Aber wer weiß, ob der IE mit der (neueren) XHTML-Definition klarkommt.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo!

          Hm. Ist zwar von der DTD her nicht Pflicht, aber von der Beschreibung und DTD aus HTML 4.01 eigentlich schon - gib dem fieldset mal ein legend-Element (als ersten Inhalt). Erstmal mit Text, und wenn es dann klappt, probiere, den Text wegzulassen.

          In der empfohlenen Reihenfolge habe ich beide Tests durchgeführt, leider ohne Erfolg. Dito ohne Erfolg hatte ich das mir verdächtig erscheinende vertical-align für das input (type=image) weggenommen.
          :-( Ich denke es wird am besten sein, das fieldset wieder durch ein div zu ersetzen ...

          Besten Dank, Andreas
          Viennamade