mira: w3c validator: end tag for element "P" which is not open ?!

Hi, in meinem html-Dokument wird folgendes bemängelt:
"end tag for element "P" which is not open" ?!

Dabei geht es wohl um folgenden Script-Part, der Fehler soll in der letzten Zeile zu finden sein.

[quote]
      <p align="center">
        <script type="text/javascript">
        <!-- Hide this script from old browsers --
        document.write('<img src="' + image + '" alt="" style="vertical-align:bottom">')
        // -- End Hiding Here -->
      </script>
      <noscript>
       <img src="base/banner01d.jpg" alt="webseite.blah">
      </noscript>
      </p>
[/quote]

Die Fehlermeldung scheint mir nicht richtig, der Validator verweist bei Problemen mit Skripts auf folgende Seite:
http://www.htmlhelp.com/tools/validator/problems.html#script

Aber auch das hilft mir leider nicht.
Gibt es ne Chance, das gerade zu bügeln?
Das Skript benötige ich, um ein JPG aus einem Pool als Banner auszuwählen.

Danke für eure Hilfe!

  1. moin,

    <p align="center">

    das Attribut "align" ist in den Varianten  Transitional, Frameset erlaubt. Hast Du den Doctype richtig deklariert?

    Ansonsten wäre ein Realtime-Link hilfreich.

    --roro

    1. Hi,

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

      Daran sollte es dann nicht liegen.
      Meine Seite ist mir noch zu sehr Baustelle, als dass ich jetzt schon public gehe. Verstehe natürlich, dass man dann besser helfen könnte. Ich reiche gerne Infos nach.

      moin,

      <p align="center">

      das Attribut "align" ist in den Varianten  Transitional, Frameset erlaubt. Hast Du den Doctype richtig deklariert?

      Ansonsten wäre ein Realtime-Link hilfreich.

      --roro

  2. Hallo,

    Hi, in meinem html-Dokument wird folgendes bemängelt:
    "end tag for element "P" which is not open" ?!

    Das stimmt schon so. Da die Regeln besagen, dass <noscript> nicht innerhalb von <p> vorkommen darf, wird angenommen, dass du das abschließende </p> weggelassen hast. Daraus folgt, dass das </p> nach dem <noscript> "überflüssig ist".

    Dabei geht es wohl um folgenden Script-Part, der Fehler soll in der letzten Zeile zu finden sein.

    <p align="center">
            <script type="text/javascript">
            <!-- Hide this script from old browsers --
            document.write('<img src="' + image + '" alt="" style="vertical-align:bottom">')
            // -- End Hiding Here -->
          </script>
          <noscript>
           <img src="base/banner01d.jpg" alt="webseite.blah">
          </noscript>
          </p>

    Verbessern kannst du das, in dem du das Bild innerhalb von document.write() oder <noscrip> mit <p> und </p> umschließt.

    Die Fehlermeldung scheint mir nicht richtig, der Validator verweist bei Problemen mit Skripts auf folgende Seite:
    http://www.htmlhelp.com/tools/validator/problems.html#script

    Die Hinweise auf dieser Seite musst du dann beachten, wenn du </p> innerhalb von document.write() anwendest. Ich empfehle dir allerdings grundsätzlich, JavaScript in einer externen Datei zu speichern.

    Gruß;

    1. Hallo Daniel,
      vielen Dank für die ausführliche Antwort.

      Verbessern kannst du das, in dem du das Bild innerhalb von document.write() oder <noscrip> mit <p> und </p> umschließt.

      So habe ich es nun gemacht und die Seite ist nun fehlerfrei validiert.

      <noscript>
        <p align="center"><img src="base/banner01d.jpg" alt="webseite.blah"></p>
      </noscript>

      Herzlichen Dank!

  3. Hi,

    Hi, in meinem html-Dokument wird folgendes bemängelt:
    "end tag for element "P" which is not open" ?!

    ja, Du hast HTML (und nicht etwa XHTML). Das bedeutet, der End-Tag </p> ist optional. In Folge dessen wird das <p>-Element spätestens dann geschlossen, wenn ein Element in Deinem Code auftaucht, welches in <p> nicht erlaubt ist. Hast Du danach noch ein </p> im Code stehen, gibt es hierzu in der Tat kein geöffnetes <p> mehr.

    Dabei geht es wohl um folgenden Script-Part, der Fehler soll in der letzten Zeile zu finden sein.

    Schreibe XHTML, dann findest Du den Fehler früher.

    Die Fehlermeldung scheint mir nicht richtig,

    Sie ist absolut korrekt.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  4. hallo,

    <p align="center">
            <script type="text/javascript">

    Das ist nicht zulässig. <script> darf nicht innerhalb von <p>...</p> stehen. Wenn du das so notierst, geht der Validator davon aus, daß _oberhalb_ von <script> kein geöffnetes Element mehr existiert (du hast aber eines da stehen). Folglich _muß_ alles, was _unterhalb_ von </script> steht, auch erst wieder geöffnet werden. Da gibt es aber kein <p>, sondern nur jenes </p>, das er konsequenterweise anmeckert.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph,

      wie Daniel schon richtig anmerkte ist <noscript> der Schuldige, nicht <script>

      Das ist nicht zulässig.

      Das ist in HTML zulässig.

      <script> darf nicht innerhalb von <p>...</p> stehen.

      <script> darf sehr wohl innerhalb von <p> ... </p> stehen.

      Nach der DTD von HTML 4.01 sind innerhalb von <p> Inline-Elemente erlaubt. In der Liste der special-Elemente findest Du auch <script>, genauso wie dies SELFHTML sagt. Analog kannst Du in SELFHTML nachlesen, dass <noscript> _nicht_ in <p> vorkommen darf. Natürlich darf man dafür auch gerne die Spezifikation bemühen.

      Freundliche Grüße

      Vinzenz