• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

getElementById....aber von einer anderen html-seite

HolgerGr

New member
Hallo, da bin ich wieder

Mein Projekt schreitet gaz gut voran. Gerade bin ich dabei, eine Möglichkeit einzubauen, mit der man Bilder vom eigenen Rechner hochladen kann.
Ihr könnt Euch das ja mal anschauen unter http://host-a.de/designer
Und dann unter dem Reiter "Bilder"

Und dieser Reiter ist auch schon mein Problem. Dessen Inhalte liegen nämlich nicht in der index.html sondern in einer Seite namens bilder.html. Beim Click wird allerdings nur der Bereich unter den Tabs erneuert. Die eigentlich Arbeitsfläche bleibt die gleiche.

Nun muss ich aber den Wert, sowohl vom Canvas-Element als auch vom Button auslesen und das kann ich nur wenn das script in der Datei liegt in der auch das Element liegt, oder?

Dieser Code liegt in der bilder.html
Code:
var imageLoader = document.getElementById('bilderupload');
imageLoader.addEventListener('change', handleImage, false);
var canvas = document.getElementById('schild');

Das hat zufolge, daß das Bild zwar geladen wird, aber nicht in den canvas-Container, weil der ja nicht in der bilder.html liegt.

Gibt es irgendeine Möglichkeit, diese Referenzen eindeutiger und über Seiten hinweg zu setzen?

Grüße
Holger
 
Und dieser Reiter ist auch schon mein Problem. Dessen Inhalte liegen nämlich nicht in der index.html sondern in einer Seite namens bilder.html. Beim Click wird allerdings nur der Bereich unter den Tabs erneuert. Die eigentlich Arbeitsfläche bleibt die gleiche.
du redest von einem iframe?

Nun muss ich aber den Wert, sowohl vom Canvas-Element als auch vom Button auslesen
wo liegt das Canvas-Element und wo der Button?

und das kann ich nur wenn das script in der Datei liegt in der auch das Element liegt, oder?
das sollte gehen
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
oder
https://developer.mozilla.org/de/docs/Web/HTML/Element/iframe#Scripting

Dieser Code liegt in der bilder.html
also im iframe? dann
Code:
var canvas = parent.document.getElementById('schild')
 
Vielen Dank für Deine schnelle Hilfe.

Nein, kein Iframe, sonderen der Inhalt wird dynamisch via JavaScript in einen div-Container geladen.

Auch mit parent lautet die Message des Debuggers: parent.document.getElementById(...) is null

Ich müßte irgendwie den Seitennamen mit übergeben können, also etwas in der Art wie:
Code:
document.getElementById(bilder.html/bilderuplpad)

....oder so

Ich hab's. Ich muß den Code nur einfach in die bilder.html schreiben. Dann geht's.
 
Zuletzt bearbeitet:
Nein, kein Iframe, sonderen der Inhalt wird dynamisch via JavaScript in einen div-Container geladen.
dann hast du nur eine seite

Auch mit parent lautet die Message des Debuggers: parent.document.getElementById(...) is null
kein iframe, kein parent. einfach nur document.getelementbyid

Ich müßte irgendwie den Seitennamen mit übergeben können, also etwas in der Art wie:
Code:
document.getElementById(bilder.html/bilderuplpad)
ich denke es gibt nur die eine sete, in die dynamisch nachgeladen wird
 
dann hast du nur eine seite

Aber nur wenn der entsprechende Reiter auch aufgerufen ist. Vorher habe ich eine Fehlermeldung bekommen bilderupload is null (oder so ähnlich. Weil solange der Reiter "Bilder" nicht aufgerufen wird und damit der Inhalt der bilder.html in den div-Container geladen wird findet die function das Element "bilderupload" nicht.

Daher hat das script nicht funtioniert. Die Lösung war eigentlich soooo simpel. Ich mußte das script nur direkt auf der bilder.html unterbringen. Jetzt wird es erst geladen wenn der Bilderreiter aufgerufen wird. Damit ist die Fehlermeldung weg und das script funktioniert.
 
Weil solange der Reiter "Bilder" nicht aufgerufen wird und damit der Inhalt der bilder.html in den div-Container geladen wird findet die function das Element "bilderupload" nicht.
logisch

Die Lösung war eigentlich soooo simpel. Ich mußte das script nur direkt auf der bilder.html unterbringen. Jetzt wird es erst geladen wenn der Bilderreiter aufgerufen wird. Damit ist die Fehlermeldung weg und das script funktioniert.
ob das aber auch die richtige lösung ist, kommt darauf an, was in dem script steht. ist es funktionalität die zu bilder.html gehört, ist das so ok. dann ist die frage warum das aber überhaupt jemals in der anderen html datei war.
gehört die funktionalität aber eher zu der anderen html datei dann musst du die funktionalität nur zu einem anderen zeitpunkt aufrufen, wenn bilder.html geladen wurde. dafür gibt es einen callback.
 
Zurück
Oben