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:
katy
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');
}
}
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,
also eine einfache IF-Abfrage und entsprechende Zuordnung und den jeweiligen Zustand direkt im (hier übrigens eigentlich überflüssigem) Link speichern.
katy
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
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
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

