getElementById in globaler Variable
wimu
- javascript
Hallöle,
hab' schon überall gesucht, kann aber nix richtiges finden. Folgendes Problem:
Ich möchte in einem externen .js einer Variable ein Element per Id zuweisen; ungefähr so:
window.onload = function() {
test = document.getElementById('test');
}
Spart einfach viel Schreibarbeit, wenn ich immer wieder auf das gleiche Element zugreife. Funktioniert auch prima im FF und Opera, aber der IE zickt und sagt was wie "Das Objekt unterstützt diese Eigenschaft oder Methode nicht". Im IE klappt es nur, wenn ich aus der globalen eine lokale Variable mache, also
var test = document.getElementById('test');
nur bringt mir eine lokale Variable gar nix. Irgendeine Idee? Mach' ich irgendwas falsch? Kann man eine lokale Variable im Nachhinein global machen? Oder besser: kann ich irgendwie über das Name-attribut direkt zugreifen, also sowas wie
document.test.innerHTML = 'irgendwas';
Das klappt bei mir immer nur bei Bildern oder Formular-Elementen, o.ä., nicht aber bei divs oder spans, für die ich das bräuchte.
Vielen Dank im voraus; Grüße,
WiMu
Spart einfach viel Schreibarbeit, wenn ich immer wieder auf das gleiche Element zugreife. Funktioniert auch prima im FF und Opera, aber der IE zickt und sagt was wie "Das Objekt unterstützt diese Eigenschaft oder Methode nicht".
Dann existiert vermutlich für den IE schon eine Variabel test, da ist der IE ein bisschen pingelig, weil du ein Element mit der IE test hast, glaubt er würde dir helfen, wenn er eine Variabel test anlegt.
Mach's mal so:
var test;
window.onload = function() {
test = document.getElementById('test');
};
Struppi.
@@Struppi:
nuqneH
Mach's mal so:
var test;
window.onload = function() {
test = document.getElementById('test');
};
Stattdessen geht auch:
~~~javascript
window.onload = function() {
window.test = document.getElementById('test');
};
(ohne 'var test;
')
Qapla'
Hi!
Ich hab mal etwas rumexperimentiert. (IE6)
Ich kann Dein Problem nicht nachvollziehen:
Diesen Code habe ich in einem externen Script:
window.onload = function()
{
test = document.getElementById("Inhalt");
computedStyle = test.currentStyle;
alert(computedStyle.backgroundColor);
test.style.backgroundColor = "#969696";
}
Der Code macht, was man erwartet.
Struppi wird recht haben mit seinem Hinweis, denn sobald ein Container in der HTML die ID 'test' bekommt, wirft der IE eine Fehlermeldung.
Hi,
Ich hab mal etwas rumexperimentiert. (IE6)
Ich kann Dein Problem nicht nachvollziehen:
test = document.getElementById("Inhalt");
Entscheidender Unterschied: bei Dir sind Variablenname und ID nicht identisch.
Das Problem kommt m.E. daher, daß der IE unsinnigerweise für Elemente mit ID bereits selbst eine globale Variable mit Name == ID anlegt.
cu,
Andreas
Hola!
Entscheidender Unterschied: bei Dir sind Variablenname und ID nicht identisch.
Das Problem kommt m.E. daher, daß der IE unsinnigerweise für Elemente mit ID bereits selbst eine globale Variable mit Name == ID anlegt.
Ja. Hatte ich nicht geschrieben, das ein Element mit der ID 'test' alles versemmelt? *nachguck*
Vielen Dank für die schnellen Antworten.
Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.
window.onload = function() {
irgendeinvariablenname = document.getElementById('irgendwasanderes');
}
Funktioniert problemlos :-), auch mit "test" als Variablenname oder Id.
Danke nochmal.
Grüße,
WiMu
Hi!
Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.
Fast. Der IE mag es nicht, wenn eine ID existiert, die so heisst, wie die Variable. Ausser Du erklaerst ihm explizit, dass Du eine neue Variable generierst (z.B. mit var).
Hab' nun selbst auch noch ein wenig herumprobiert, und anscheinend mag der IE es nicht, wenn die Variable so heißt, wie die Id, die gespeichert werden soll.
Sagte ich bereits und wie auch gesagt, kannst du die Probleme verhindern, wenn du die Variabel deklarierst, was sowieso sinnvoll ist.
Struppi.