Verschwindenlassen von Layer funktioniert nicht
Sören
- javascript
0 Mr. JavaScript0 suit0 Mr. JavaScript0 Sören
0 suit0 Cheatah
0 suit0 Gunnar Bittersmann
Hi,
ich hab ein Problem. Ich habe mir mit einer For-Schleife eine beliebige Anzahl von Layers erstellt. Jetzt will ich, wenn ich in eines dieser Layer-Bereiche klicke, das mir dieser Layer ausgeblendet wird.
Dafür habe ich folgende Funktion geschrieben:
function versuch() {
document.getElementById(this).visibility = "hidden"
}
Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.
Wo liegt mein Fehler?
gruß
Sören
Wo liegt mein Fehler?
dein code is totaler schwachsinn probiers ma so:
function versuch(a) {
a.style.visibility = "hidden"
}
dein code is totaler schwachsinn probiers ma so:
dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt
dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt
dann ist gunnars script genau so falsch
function versuch(element)
{
element.style.visibility = "hidden";
}
2 zu 1 denk mal drüber nach :P
dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt
dann ist gunnars script genau so falsch
function versuch(element)
{
element.style.visibility = "hidden";
}2 zu 1 denk mal drüber nach :P
also das script von gunnar funzt einwandfrei und macht genau das was es soll...
danke für die schnelle hilfe
gruß
Sören
dein code is totaler schwachsinn probiers ma so:
dein code ist auch nicht viel besser ;) - ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt
nachtrag, siehe hier:
http://www.quirksmode.org/js/this.html
Hi,
ein element mit this anzusprechen, wenn die funktion das betreffende element direkt ausblenden soll ist nicht so verkehrt
es sei denn, 'this' ist das window-Objekt (oder sonstwas), und nicht das betreffende Element. So wie es in dem genannten Code der Fall ist.
Cheatah
Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.
document.getElementById(this) hat auch keine properties erst document.getElementById(this).style hat welche die du ansprechen kannst
Wo liegt mein Fehler?
siehe oben, denk nochmal nach
Hi,
document.getElementById(this) hat auch keine properties
*hüstel* sofern 'this' etwas wäre, was als ID im Dokumentbaum zu finden ist, hätte das daraus resultierende Objekt selbstverständlich auch Properties ...
erst document.getElementById(this).style hat welche
... beispielsweise 'style'. Und wenn document.getElementById(this) schon keine Properties hat, dann kann dessen style-Property ebenfalls keine haben. Es sei denn, Du bist Mathematiker und hast es Dir zur Philosophie gemacht, dass alle geraden Primzahlen größer 2 Quadratzahlen sind.
Cheatah
... beispielsweise 'style'. Und wenn document.getElementById(this) schon keine Properties hat, dann kann dessen style-Property ebenfalls keine haben.
wo du recht hast, hast du recht ;) jetzt hab ich geschlafen und jetzt ist mir das auch klar, dass ich hier zu schnell geschossen habe
Es sei denn, Du bist Mathematiker und hast es Dir zur Philosophie gemacht, dass alle geraden Primzahlen größer 2 Quadratzahlen sind.
gerade Primzahlen größer 2 Quadratzahlen - den muss ich mir merken :D
@@Sören:
function versuch() {
document.getElementById(this).visibility = "hidden"
}Wenn ich jetzt in das Layer-Feld klicke, wird mir als Fehler angezeigt das document.getElementById(this) keine properties hat.
1. IIRC ist 'this' in dem Falle das Funktions-Objekt.
2. Möchtest du keine 'visibility'-Eigenschaft des Objekts neu einführen, sondern von dessen Unterobjekt 'style' die 'visibility'-Eigenschaft setzen.
Mach es so:
function versuch(element)
{
element.style.visibility = "hidden";
}
Aufruf per <foo onclick="[code lang=javascript]versuch(this);
">[/code]
Dann sparst du auch die unnötigen 'document.getElementById()'.
Live long and prosper,
Gunnar