Axel Richter: DOM: ist XHTML auch für FF eher XML als (X)HTML?

Beitrag lesen

Hallo,

Aber warum greifst du nun auf den unzuverlässigen tbody zu?
Dadurch spuckt Fx hier nur noch „Fehler: mytbody has no properties“ aus, es existiert also kein tbody-Element.

Dann mach halt eins rein in den HTML-Code ;-)).

Das ist übrigens auch die Fehlerquelle für FF.
Folgendes funktioniert mit
Content-Type: text/xml
und
Content-Type: application/xhtml+xml:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
  <head>
    <title>deleteRow</title>
    <style type="text/css">
      * {
        margin:0;
        padding:0;
      }
      html,
      body {
        height:100%;
      }
    </style>
    <script type="text/javascript">
    /*<![CDATA[*/

window.onload = function () {

var mytable = document.getElementsByTagName("table")[0];
      var myrows = mytable.getElementsByTagName("tr");

for (var i = myrows.length-1; i > -1; i--) {
        mytable.deleteRow(i);
      }
    }

/*]]>*/
    </script>
  </head>
  <body>
    <table>
    <tbody>
      <tr><td>Cell 1</td></tr>
      <tr><td>Cell 2</td></tr>
      <tr><td>Cell 3</td></tr>
      <tr><td>Cell 4</td></tr>
      <tr><td>Cell 5</td></tr>
      <tr><td>Cell 6</td></tr>
      <tr><td>Cell 7</td></tr>
    </tbody>
    </table>
  </body>
</html>

Nimm das TBODY-Element raus und Der FF produziert den
Fehler: uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount"  code: "1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)"  location: "http://localhost/test.xht Line: 25"]

Das _ist_ ein Bug, weil laut XHTML 1.0 DTD das TABLE-Element TBODY _oder_ TR enthalten darf. Mindestens eins davon _muss_ sein, aber TBODY _muss_ eben nicht sein.

viele Grüße

Axel