Variable nicht neu definieren sondern "ausführen";
Timo L.
- javascript
0 Felix Riesterer
0 MudGuard
0 molily
0 Timo L.
Guten Abend.
Ich bastle gerade an einer Animationsfunktion mit Javascript.
Diese Funktion nimmt unter anderm einen Parameter an "Welches Element" verändert werden soll.
(Alle codes sind vereinfacht dargestellt)
function effect(resizeelement)
Ich rufe die Fuktion dann z.b so auf:
effect(document.getElementById("blabla").style.right);
In der Funktion möchte ich nun quasi das Element bewegen. Dies mache ich so:
resizeelement="5px";
Nun wird mir aber die Variable "resizeelement" geändert, anstatt das dem in "reisizeelement" vorhanden Element der Wert geändert wird.
Wie löse ich diese "Problem"?
Mit freundlichen Grüssen Timo Lang
Lieber Timo,
für Animationen in JavaScript möchte ich Dir meinen Artikel anempfehlen. Auch wenn er nicht 100%ig das behandelt, was Du machen möchtest, so bespricht er doch einige dafür notwendige Grundlagen: Fader-Framework - kleiner Lehrgang zum vernünftigen Schreiben eines JavaScripts
Liebe Grüße,
Felix Riesterer.
Hi,
Diese Funktion nimmt unter anderm einen Parameter an "Welches Element" verändert werden soll.
(Alle codes sind vereinfacht dargestellt)
Das dürfte ein Problem sein.
Nun wird mir aber die Variable "resizeelement" geändert, anstatt das dem in "reisizeelement" vorhanden Element der Wert geändert wird.
In dem von Dir gezeigten Code gibt es keine solche Variable (nur einen Funktionsparameter).
Wie löse ich diese "Problem"?
Wenn es tatsächlich noch so eine Variable gibt: entweder Variable oder Parameter umbenennen.
cu,
Andreas
Hi Andreas,
In dem von Dir gezeigten Code gibt es keine solche Variable (nur einen Funktionsparameter).
Ich wollte mit Variable eigentlich Funktionsparameter ausdrücken.
Nochmals kurz erläutert:
Der Funktionsparameter verweist auf ein Attribut.
Dieses Attribut möchte ich ändern.
Wenn ich jetzt aber "Funktionsparameter='5px';" ausführe, ändert sich nur der Funktionsparameter und nicht das Attribut.
Ich hoffe das ich mich nun verständlicher ausgedrückt habe.
Gruss Timo L.
Lieber Timo,
Du musst meine Antwort nicht würdigen, aber geholfen hätte sie Dir schon - insbesondere bei dem Problem "Funktionsparameter".
Liebe Grüße,
Felix Riesterer.
function effect(resizeelement)
Ich rufe die Fuktion dann z.b so auf:
effect(document.getElementById("blabla").style.right);
Wenn du das tust, dann *verweist* du nicht auf ein Attribut (Call by Reference), sondern liest dieses Attribut aus (es ist anfänglich leer) und übergibst dann dessen Wert (Call by Value).
Bei der Funktion kommt also nur ein (leerer) String an, und wenn du den änderst, änderst du nur den Wert der lokalen Variable, aber nicht etwa den Wert der Eigenschaft .style.right.
Du kannst nur Objekte als Referenzen übergeben, das Elementobjekt würde sich anbieten.
Den CSS-Eigenschaftsnamen musst du dann wohl oder übel als String übergeben:
func(document.getElementById("bla"), "left");
In der Funktion:
function func (element, cssProperty) {
element.style[cssProperty] = "5px";
}
Mathias
element.style[cssProperty] = "5px";
Vielen Dank Mathias. Genau das habe ich gesucht.
@Felix Riesterer:
Dein Fader-Framework habe ich mir angeschaut.
Sehr schön wie du das ganze Schritt für Schritt aufgebaut hast.
Dank deinem Script verstehe ich nun den Umgang mit "new" bzw. objekten und co. ein wenig besser.
Grüsse aus der Schweiz
Timo L.