Problem mit this beim <body>-Tag

Pius Hermit

Erfahrenes Mitglied
Hallo Zusammen...
diesmal ist es vielleicht ein kleineres Problem: Ich programmiere gerne modular,
und möchte Elemente gerne im aufrufenden entweder <body> oder aber <frame> darstellen. Irgendwie habe ich mir in den Kopf gesetzt, dass es doch möglich sein muß,
so flexibel zu programmieren, dass beides ohne Fallunterscheidung mit this zu erledigen ist.
Code:
function VBilder(o, steigend, schrittweite){
	this.oFrame = o;
	this.steigend = steigend; 
	this.schrittweite = schrittweite;
	this.hintergrund = this.oFrame.style.backgroundColor;
...
this.oFrame.appendChild(this.bild[this.anzahl]);
...
function start(o) {
	maenner = new VBilder(o, false, 1);
...
<body onload = "start(this)"; onresize = "refresh()">
...
 
Zuletzt bearbeitet:
Bislang hat alles funktioniert, als ich noch document.body[0]... verwendete, anstatt dass objekt "this" (body) zu übergeben und weiter zu benutzen: Nun läßt sich z.B. kein child mehr appenden, der style "backgroundcolor" ist nicht bekannt. Irgendwie wird this, bzw. o bzw. oFrame nicht richtig referenziert...:mad:
 
Zuletzt bearbeitet:
Wird dir denn bei der start Funktion das Objekt richtig übergeben?
Javascript:
function start(o) {
        alert(typeof o);
}
 
Der Type ist "object", wie ich gewünscht habe...
Verwende ich o.getclass, so erscheint "undefined" ?
o.tostring ist ebenfalls undefined.
 
Zuletzt bearbeitet:
onLoad ist ein Event für window-Objekte(oder <img> ...aber darum gehts hier ja nicht).
Auch wenn du das im <body> notierst, das auslösende Objekt ist immer das window-Objekt, und nicht das HTML-Element <body> .

Aber deinen Ansatz mit document.body[0] kannst du ruhig weiterverfolgen, denn wenn du das window-Objekt hast(oder das iFrame...welches auch ein window-Objekt ist), ist es nur ein kleiner Schritt bis zum zugehörigen <body> :)
Code:
function start(o) {
	maenner = new VBilder(o.document.getElementsByTagName('body')[0], false, 1);
}
 
Zuletzt bearbeitet:
onLoad ist ein Event für window-Objekte(oder <img> ...aber darum gehts hier ja nicht).
Auch wenn du das im <body> notierst, das auslösende Objekt ist immer das window-Objekt, und nicht das HTML-Element <body> .

Aber deinen Ansatz mit document.body[0] kannst du ruhig weiterverfolgen, denn wenn du das window-Objekt hast(oder das iFrame...welches auch ein window-Objekt ist), ist es nur ein kleiner Schritt bis zum zugehörigen <body> :)
Code:
function start(o) {
	maenner = new VBilder(o.document.getElementsByTagName('body')[0], false, 1);
}

Habe jetzt den Parameter bei der von onload getriggerten Funktion geändert:
Code:
<body onload="start(document.getElementsByName('body')[0])"; onresize = "refresh()">

Das gleiche Problem wie vorher...:mad:
 
Wollte auch mal was leisten :D
Habe nur leider nicht byTagName sondern byName verwendet...
Vielen herzlichen Dank!

p.s. Bis auf die Farbe.... zündet onload vielleicht, bevor CSS-Eigenschaften gelesen werden? Vermutlich...
 
Zuletzt bearbeitet:
p.s. Bis auf die Farbe.... zündet onload vielleicht, bevor CSS-Eigenschaften gelesen werden? Vermutlich...

Nö, das Problem dürfte darin liegen, dass du mit JS nur style-Attribute lesen kannst, welche per JS gesetzt wurden, oder welche inline im Element notiert sind.

Styles, welche ein Element aus einem globalen Stylesheet erhält, bleiben aussen vor.

Eine Möglichkeit zur Abhilfe findest du hier: http://www.tutorials.de/forum/javascript-ajax/324001-style-abfragen-funktioniert-nicht.html
 
Zurück