Supportnet Computer
Planet of Tech

Supportnet / Forum / Webseiten/HTML

onclick-Ereignis mit Javascript ändern





Frage

Wie kann ich ein onclick-Ereignis eines Links in folgender Form ändern: [code] <a href="Javascript:void(0);" style="font-size:x-large;" onclick="new Effect.SlideDown('bildwoche');" id='jan'>blablabla</a> [/code] ich möchte jetzt bei einem Klick auf einen Button oder Link das das onclick-Ereignis in dieses geändert wird: [code] onclick="new Effect.SlideUp('bildwoche');" [/code] Wenn ich das so mach: [code] function aendern() { document.getElementById('jan').onclick = "new Effect.SlideUp('bildwoche')"; } [/code] funktionierts nicht

Antwort 1 von son_quatsch

Richtig, dem onclick muss ja auch eine Funktion zugeordnet werden, statt nur eine Anweisung. Versuch es mit

function effekt() {
  new Effect.SlideUp('bildwoche');
}

function aendern() {
  document.getElementById('jan').onclick = effekt;
}


Antwort 2 von katy

Hallo Computerfreaki,

du hast dem Event ein String-Objekt zugeordnet. Damit kann der nichts anfangen. Wie son_quatsch schon ausführte musst du einem Event eine Funktion zuornen. Wenn du diese aber sonst nicht weiter brauchst genügt eine anonyme Funktion:

function aendern() {
 document.getElementById('jan').onclick = function () {
  new Effect.SlideUp('bildwoche');
 }
}


katy

Antwort 3 von Computerfreaki

Jetzt bräuchte ich noch ne Möglichkeit das Skript dynamischer zu machen.
Ich habe probiert diese zwei Funktionen in eine zu integrieren aber das hat nicht funktioniert.

Ich hab mir das so vorgestellt:
Die ID´s in den zwei Funktionen sollen über eine Funktion zu bestimmen sein.

Hier nochmal der jetzige Skript (die fett markierten Stellen sollten dann über eine Funktion veränderbar sein:

function aendere() {
document.getElementById('jan').onclick = function () {
new Effect.SlideUp('bildwoche');aendere_zurueck();
}
}
function aendere_zurueck() {
document.getElementById('jan').onclick = function() {
new Effect.SlideDown('bildwoche');aendere('jan');
}
}

Antwort 4 von Computerfreaki

Sorry, da unten in der letzten Zeile muss die Funktion mit keinem Parameter aufgerufen werden.

Antwort 5 von katy

Hallo Computerfreaki,

function aendere() {
 var janID=document.getElementById('jan');
 if (janID.effekt && janID.effekt=="down") {
  janID.onclick = function () {
   new Effect.SlideUp('bildwoche');
  }
  janID.effekt=="up"
 }
 else {
 janID.onclick = function() {
  new Effect.SlideDown('bildwoche');
 }
 janID.effekt="down";
}


also eine einfache IF-Abfrage und entsprechende Zuordnung und den jeweiligen Zustand direkt im (hier übrigens eigentlich überflüssigem) Link speichern.

katy

Antwort 6 von Computerfreaki

Kann man jetzt eigentlich auch die ID´s in den Parametern der Funktion auswählen. Weil wenn ich das so mache muss ich für jedes Video oder Bild ein neuen Skript schreiben

Antwort 7 von Computerfreaki

Problem hat sich gelöst.
Hier ist die Antwort:
http://github.com/madrobby/scriptaculous/wikis/effect-toggle

Antwort 8 von katy

und das verstehst du jetzt besser?

Ich farge mich gerade warum ich dir überhaupt noch antworte, in den letzten beiden Threads hast du dann jedesmal selbst eine Lösung präsentiert. Die eine ist Murks und bei dieser hier ist der Bezug zum Problem unklar.

katy