Struppi: HTML mit Javascript-Objekt-Aufruf

Beitrag lesen

Hat jemand eine Idee, wie dieses Verhalten zu erklären ist?

also erstmal aus welcher Mottenkiste hast du den Code ausgegraben?

<html>
<head>
<title>example</title>
</head>
<script language="JavaScript" >

dir ist bekannt was bis alles hierhin fehlt?

Nun zu deinem Problem.

function myTable() {
  this.writeTable = function _writeTable() {
   var text = "";
   text = "<table border>";
   text += "<tr onMouseover="this.theTable.msgBox('hello') >\n";
   text += "<td>ABC</td>";
   text += "</table>";

Mal abgesehen von der völlig sinnlosen Tabelle, bei dem mouseover ist this gleich dem <tr> Element, du rufst hier also [TR-Element].theTable.msgBox() auf.
Damit ist dieses Verhalten/Fehlermeldung zu erklären.

if(document.getElementById)
    document.getElementById("TableSection").innerHTML = text
   else if(document.all)
    document.all.TableSection.innerHTML = text
   else if(document.layers) {
    document.TableSection.document.open();
    document.TableSection.document.write(text);
    document.TableSection.document.close();
    }

Ist zwar gut gemeint, aber ich bin 100% sicher das Netscape 4 Nutzer heutzutage JS ausgeschaltet haben, da sie auf jeder 2. Seite mit Fehlermeldungen zugeschissen werden (von den ganzen Abstürzen dabei nicht zu sprechen), du kannst (und wenn du deine Nerven und Code schonen willst, solltest du auch) ihn ignorieren.

du solltest das ganze, mit document.createElement (s. selfhtml) und appendChild() realisieren. Das bietet dir mehr Möglichkeiten. hier mal dein Beispiel:

  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"  
      "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
  <head>  
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" >  
    <title>writeTable</title>  
</head>  
<body>  
  
<html>  
<head>  
 <title>example</title>  
</head>  
<script type="text/javascript">  
  
function myTable()  
{  
    var obj = null;  
    this.writeTable = function()  
    {  
        var self = this;  
        var obj = document.createElement('span');  
        obj.style.border = '1px solid black';  
  
        obj.innerHTML = 'abc';  
        obj.onmouseover = function()  
        {  
            self.msgBox('Hallo');  
        }  
        document.getElementById('TableSection').appendChild( obj );  
    };  
  
    this.msgBox = function (mystring)  
    {  
         alert(mystring);  
    }; // msgBox()  
 } // class myTable  
  
window.onload = function()  
{  
  var theTable    = new myTable();  
  theTable.writeTable();  
  
}  
</script>  
  
<body >  
the table: <div id="TableSection" ></div>was here  
  
</body>  
</html>  

Struppi.

--
Javascript ist toll (Perl auch!)