43 Stimmen

Kann ich zwei JavaScript-Onclick-Ereignisse in einem Element haben?

Können wir zwei JavaScript-Klick-Ereignisse in ein Schaltflächen-Tag vom Typ Eingabe einfügen? Um zwei verschiedene Funktionen aufzurufen?

51voto

rochal Punkte 7531

Das hier funktioniert:

<input type="button" value="test" onclick="alert('hey'); alert('ho');" />

Und das hier auch:

function Hey()
{
    alert('hey');
}

function Ho()
{
    alert('ho');
}

.

<input type="button" value="test" onclick="Hey(); Ho();" />

Die Antwort lautet also: Ja, Sie können das :) Allerdings würde ich empfehlen, unauffälliges JavaScript zu verwenden. js mit HTML zu mischen ist einfach unschön.

0 Stimmen

Es ist nicht "böse". Es ist nur nicht empfehlenswert, weil einige Benutzer JavaScript deaktivieren und aus einigen anderen Gründen. w3.org/wiki/Die_Prinzipien_von_unaufdringlichem_JavaScript

20voto

Sean Kinsey Punkte 36651

Das HTML

<a href="#" id="btn">click</a>

Und das Javascript

// get a cross-browser function for adding events, place this in [global] or somewhere you can access it
var on = (function(){
    if (window.addEventListener) {
        return function(target, type, listener){
            target.addEventListener(type, listener, false);
        };
    }
    else {
        return function(object, sEvent, fpNotify){
            object.attachEvent("on" + sEvent, fpNotify);
        };
    }
}());

// find the element
var el = document.getElementById("btn");

// add the first listener
on(el, "click", function(){
    alert("foo");
});

// add the second listener
on(el, "click", function(){
    alert("bar");
});

Dadurch werden sowohl "foo" als auch "bar" angezeigt, wenn sie angeklickt werden.

12voto

Luca Filosofi Punkte 30501

Es ist nicht nötig, zwei Funktionen innerhalb eines Elements zu haben, sondern nur eine, die die beiden anderen aufruft!

HTML

<a href="#" onclick="my_func()" >click</a>

JavaScript

function my_func() {
    my_func_1();
    my_func_2();
}

8voto

Jacob Relkin Punkte 156445

Sie können einen Handler anhängen, der beliebig viele andere Handler aufruft:

<a href="#blah" id="myLink"/>

<script type="text/javascript">

function myOtherFunction() {
//do stuff...
}

document.getElementById( 'myLink' ).onclick = function() {
   //do stuff...
   myOtherFunction();
};

</script>

1 Stimmen

Der Nachteil dieser Methode ist, dass der Kontext hier das globale Fensterobjekt ist und "this" nicht innerhalb der myOther.... Deklaration funktionieren würde, dies verweist nur auf die Funktion und fügt sie nicht der onclick-Eigenschaft des Elements zu, es lohnt sich, dies zu erklären :) Abgesehen davon wird die Antwort für den Fall "Aufruf von 2 Funktionen oder 200" funktionieren.

0voto

Elitmiar Punkte 32308

Sie könnten auch etwas in dieser Art versuchen

<a href="#" onclick="one(); two();" >click</a>

<script type="text/javascript">
    function one(){
        alert('test');
    }

    function two(){
        alert('test2');
    }
</script>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X