Blackbird: Parameterübergabe als Objekt (an Christian falls er hier is)

-------------ALTE Antwort auf meine Frage--------------------

Die folgende Nachricht zum Thema stammt von: Christian, 09. Mai 2003, 00:15 Uhr

Hi,

function fadeOut(fname)
      {

erwin=fname;
       alert(erwin);

erwin.style.filter="Alpha(opacity="+oc+")";

if(oc!=20) setTimeout('oc -= 5;fadeOut(fname)',40);
      }

erwin ist eine String-Variable! Du brauchst aber ein Objekt!
-->
document.getElementById(fname).style.filter = "Alpha....";

<img name="team" id="team1" src="img/team.jpg" height="23px" width="109px"  onclick="fadeOut('team1');>

kannst auch einfach direkt das Objekt anstatt die Id des Objekts übergeben:

<img name="team" id="team1" src="img/team.jpg" height="23px" width="109px"  onclick="fadeOut(this);>

dann brauchst auch in der Funktion nicht mehr mit getElementById zu arbeiten.

Wenn ich die fadeout Funktion ohne Parameter schriebe (also anstatt erwin.style.filters...... team1.style.filters) geht alles wunderbar!

sehr komisch! document.team1.style.filters kann ich mir noch gut vorstellen! aber einfach nur so...!!? sehr unsicher, meiner meinung nach.

Christian

--------------------

Hallo Christian wenn ich den Sting so reinsetze:

function fadeOut(fname)
      {

document.getElementById(fname).style.filter ="Alpha(opacity="+oc+")";

if(oc!=20) setTimeout('oc -= 5;fadeOut(fname)',40);
      }

<img name="team" id="team1" src="img/team.jpg" height="23px" width="109px"  onclick="fadeOut('team1');">

Denn bekomme ich die Fehlermeldung "Fname ist undefiniert" obwohl ich sie mit per Alert als "team1" ausgeben lassen kann! ´

Was mach ich falsch?!

gruß
Blackbird

  1. Hallo,

    ich bin zwar nicht Christian aber was passiert denn bei setTimeout?

    bernd

    1. Hallo,

      ich bin zwar nicht Christian aber was passiert denn bei setTimeout?

      bernd

      HI, beim Settimeout? Da läuft er wieder in die Funktion und faded das Bild bissle mehr bis es halt einen gewissen Alpha Wert erreicht hat!

      Aber er läuft ja garnicht bis zum Timeout beim

      document.getElementById(fname).style.filter ="Alpha(opacity="+oc+")";

      Setz er das "team1" nicht in die Variable "fname" rein sondern sagt das sie undefiniert sie (obwohl sie per alert richtig angezeigt wird somit nicht undefiniert ist)

      gruß
      Blackbird

      1. Hallo,

        HI, beim Settimeout? Da läuft er wieder in die Funktion und faded das Bild bissle mehr bis es halt einen gewissen Alpha Wert erreicht hat!

        Wer läuft in die Funktion und vor allem was bedeutet "läuft in die Funktion"? Also ich kenne Funktionsaufrufe aber keine Funktionseinläufe;)
        Also ich frag jetzt mal anders : Was passiert denn 40ms später und was macht setTimeout bzw. was passiert denn dort genau?

        Setz er das "team1" nicht in die Variable "fname" rein sondern sagt das sie undefiniert sie (obwohl sie per alert richtig angezeigt wird somit nicht undefiniert ist)
        <
        Bei ersten Funktionsaufruf ist sie auch nicht undefiniert. Und beim 2-ten?
        Weißt du was Gültigkeitsbereich und Lebensdauer in Bezug auf Variablen bedeutet?
        Warum geht die Sache mit dem "oc -= 5"?
        Also ich will jetzt nicht besserwisserisch oder arogant wirken aber du solltest dir diese Lösung selber erarbeiten.

        bernd

        1. Wenn ich nich seit paar Wochen rumprobiert hätte würde ich hier nicht posten!

          Es geht hier nicht um die OC Variable sondern um die Variable fname! Ich möchte hier nicht alles 32mal schreiben, du kannst dir (wenn du möchtest) mal im Archiv für Mai mein 1. Posting ankucken (wo damals Christian geantwortet hatte) ich habe den Vorschlag von ihm angenommen und die Funktion umgeschrieben nun geht es aber leider immernoch nicht richtig.

          Es geht mir lediglich um die fname Variable die "angeblich" keinen Wert hat nach dem Funktions Aufruf durchs onclick im IMG-Tag. Nicht um die funktionalität des Fadings durch CSS/Alphakanal daher auch nicht um die fehlende OC Variable die ich der einfachheit hier nicht mitgepostet habe.

          gruß
          Blackbird

          1. Hi,

            [pref:t=46395&m=253125].
            Du sollst auch nicht alles 32-mal schreiben sondern dir den Code 1-mal richtig anschauen!

            bernd

            1. Sorry, hier geht's lang [pref:t=46395&m=253125].

              bernd

              1. Sorry, hier geht's lang [pref:t=46395&m=253125].

                bernd

                Hi Bern,

                habs nun selber geschafft:

                document.getElementById(fname).style.filter ="Alpha(opacity="+oc+")";
                       erwin=fname;
                       if(oc!=20) setTimeout('oc -= 5;fadeOut(erwin)',40);
                      }

                (wie so oft ist die 1. Idee den man hatte die richtige :))

                Siehe: http://forum.de.selfhtml.org/archiv/2003/5/46173/

                gruß
                Blackbird

                P.s.: Trozdem danke für die Mühe

                1. Hi,

                  du solltest trotzdem dem Link mal folgen, dann verstehst du vielleicht auch was da abgeht und warum's mit erwin klappt und so ganz nebenbei siehst du auch wie's ohne erwin gemacht wird.
                  Und nicht vergessen, es geht nicht nur um die Lösung sondern auch um das Verständnis. Die Lösung hilft dir jetzt und heute. Morgen kann das schon wieder ganz anders aussehen, weil du es nicht begriffen hast. Also tu mir den Gefallen und schau dir das Posting von Sven an.

                  bernd