HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Objekt aus erzeugtem HTML ansprechen

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Objekt aus erzeugtem HTML ansprechen

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
ulibaehr



Anmeldungsdatum: 22.10.2006
Beiträge: 3

BeitragVerfasst am: 22.10.2006 21:55:06    Titel: Objekt aus erzeugtem HTML ansprechen Antworten mit Zitat

Ich generiere HTML mit einem Aufruf eines Javascript-Objekts (hier: "theTable").
Die JavaScript-Konsole meldet aber "theTable is not defined" - warum?

Wenn man in das onMouseover dagegen
Code:
this.theTable.msgBox('hello')
schreibt erhält man "this.theTable has no properties" - dabei geht es ja nicht um Properties, sondern um einen Funktionsaufruf.

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

Code:
<html>
<head>
 <title>example</title>
</head>
<script language="JavaScript" >
 function myTable() {
  this.writeTable = function _writeTable() {
   var text = "";
   text = "<table border>";
   text += "<tr onMouseover=\"theTable.msgBox('hello') >\n";
   text += "<td>ABC</td>";
   text += "</table>";
   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();
    }
  } // writeTable()

  this.msgBox = function _msgBox(mystring) {
   alert(mystring);
  } // msgBox()
 } // class myTable
</script>

<body onLoad="
  var theTable    = new myTable();
  theTable.writeTable();
">
the table:
 <div id="TableSection" ></div>
was here
</body>
</html>
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kambfhase
Häufiger Poster


Anmeldungsdatum: 19.03.2006
Beiträge: 235

BeitragVerfasst am: 22.10.2006 22:22:28    Titel: Antworten mit Zitat

Ich würde das script erst mal aufräumen:

Code:

<script language="JavaScript" >
 function myTable() {
  this.writeTable = _writeTable
  this.msgBox = _msgBox
 } // class myTable

function _msgBox(mystring) {
   alert(mystring);
  } // msgBox()

function _writeTable() {
   var text = "";
   text = "<table border>";
   text += "<tr onMouseover=\"theTable.msgBox('hello')\" >\n";
   text += "<td>ABC</td>";
   text += "</tr>";
   text += "</table>";
   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();
    }
  } // writeTable()

</script>


ich bin mir nicht sicher ob es geht. aber ich wüsste gerne mal was du mit "javaScript-Konsole" meinst. Vllt hast du ja nen geilen JS-Editor, den ich gebrauchen könnte.

MfG Kambfhase
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ulibaehr



Anmeldungsdatum: 22.10.2006
Beiträge: 3

BeitragVerfasst am: 23.10.2006 17:46:53    Titel: Aufräumen bringt's nicht! Antworten mit Zitat

Hallo Kambfhase,

das aufgeräumte Script liefert aber leider auch wieder "theTable is not defined" Sad

Zitat:
ich wüsste gerne mal was du mit "javaScript-Konsole" meinst.

Beim Firefox gibt es unter Extras->JavaScript-Konsole ein Fenster, in dem JavaScript-Meldungen angezeigt werden.

Zitat:
hast du ja nen geilen JS-Editor

Nö, den such ich auch. Ziemlich praktisch ist aber der Firebug-Plugin. Der liefert immerhin einen Debugger.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ulibaehr



Anmeldungsdatum: 22.10.2006
Beiträge: 3

BeitragVerfasst am: 04.11.2006 16:08:43    Titel: Die Lösung: Nicht ins onload Antworten mit Zitat

Mittlerweile kenne ich den Trick: Objekte, die im onload erzeugt werden, verschwinden auch wieder mit dem Ende des onload-Events. Man muß globale Objekte also an anderer Stelle im HTML-Code anlegen. (Eigentlich logisch, wenn man es weiß ...)
Der funktionierende Code sieht also so aus:
Code:

<html>
<head>
   <title>example</title>
</head>
<script language="JavaScript" >
      var theTable    = new myTable();

 function myTable() {
  this.writeTable = _writeTable
  this.msgBox = _msgBox
 } // class myTable

function _msgBox(mystring) {
   alert(mystring);
  } // msgBox()

function _writeTable() {
   var text = "";
   text = "<table border>";
   text += "<tr onMouseover=\"theTable.msgBox('hello')\" >\n";
   text += "<td>ABC</td>";
   text += "</tr>";
   text += "</table>";
   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();
    }
  } // writeTable()

</script>
<body onLoad="
      theTable.writeTable();
">
the table:
   <div id="TableSection" ></div>
was here
</body>
</html>
[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.