Tobias Unger: JavaScript und XHTML 1.0 Strict

Hallo!

Ich versuche gerade, eine XHTML1.0-Strict-Website zu erstellen.
Dabei brauche ich unter anderem unten stehendes (stark vereinfachtes Beispiel).
Leider funktioniert dies nicht mehr, sobald ich die DOCTYPE-Angabe ergänze.
Der w3c-Validator findet keine Fehler, ein Plugin zu firefox meldet: "Error: document.all has no properies"!

---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Interaktives mit XHTML 1.0</title>

<style type="text/css">
a { display:block; color:#000000; }
</style>

<script type="text/javascript">
<!--

var Status = new Array('hide','hide','hide');

function flap(Index) {

if(Status[Index] == 'hide') {

eval("document.all.Menu"+Index+".style.visibility = 'visible'");
     Status[Index] = 'view';
  }
 else {

eval("document.all.Menu"+Index+".style.visibility = 'hidden'");
     Status[Index] = 'hide';
  }
}
//-->
</script></head>
<body>

<div onmouseover="javascript:flap(0)" onmouseout="javascript:flap(0)">
News

</div>
<div onmouseover="javascript:flap(1)" onmouseout="javascript:flap(1)">
News
</div>
<div onmouseover="javascript:flap(2)" onmouseout="javascript:flap(2)">
News
</div>

<div id="Menu0" style="visibility: hidden;">
<a href="a">Link 1</a>
<a href="a">Link 2</a>
<a href="a">Link 3</a>
</div>
<div id="Menu1" style="visibility: hidden;">

<a href="a">Link 4</a>
<a href="a">Link 5</a>
<a href="a">Link 6</a>
</div>
<div id="Menu2" style="visibility: hidden;">
<a href="a">Link 7</a>
<a href="a">Link 8</a>
<a href="a">Link 9</a>
</div>

</body>

</html>
---

Hat vielleicht jemand eine Idee, woran das liegen könnte???

Vielen Dank für eure Bemühungen,

Tobias Unger

PS.: Selfhtml ist super, ohne dieses würde ich meine Website seit einem Jahr mit OpenOffice zusammenschustern!

  1. Hallo,

    Ich versuche gerade, eine XHTML1.0-Strict-Website zu erstellen.
    Dabei brauche ich unter anderem unten stehendes (stark vereinfachtes Beispiel).
    Leider funktioniert dies nicht mehr, sobald ich die DOCTYPE-Angabe ergänze.
    Der w3c-Validator findet keine Fehler, ein Plugin zu firefox meldet: "Error: document.all has no properies"!

    Der Internet Explorer ist der einzige Browser, der document.all offiziell unterstützt. Alle anderen unterstützen es nicht bzw. nur aus dem Grunde, weil Webautoren diesen Umstand ignorieren und document.all gedankenlos verwenden.
    http://de.selfhtml.org/javascript/objekte/all.htm#allgemeines

    Firefox nimmt solche document.all-Fälle also aus Kompatibilitätsgründen an, aber nur, wenn die Seite keine vollständige DOCTYPE-Angabe besitzt. Mit Dokumenttyp-Angabe schaltet er in einen anderen Modus und wirft einen Fehler aus, wenn document.all verwendet wird.

    eval("document.all.Menu"+Index+".style.visibility = 'visible'");

    Verwende document.getElementById('Menu' + Index).style.visibility
    Das ist eine standardisierte Methode des Document Object Models des W3C. Dazu auch:
    http://de.selfhtml.org/javascript/intro.htm
    http://de.selfhtml.org/dhtml/modelle/dom.htm

    eval ist in solchen Fällen immer unnötig – selbst dann, wenn document.all verwendet wird.

    Mathias

    1. Hallo Mathias,
      das funktioniert!
      Vielen Dank, es hilft mir wirklich weiter!!!

      Tobias Unger