Timo L.: Variable nicht neu definieren sondern "ausführen";

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

  1. 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. 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.

      1. 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.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. 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

    1. 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.