Wie finde ich die ID der Schaltfläche, auf die geklickt wird?
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
}
javascript
html
Bin Chen
quelle
quelle
Antworten:
Sie müssen die ID als Funktionsparameter senden. Mach es so:
Dadurch wird die ID gesendet,
this.id
alsclicked_id
die Sie in Ihrer Funktion verwenden können. Sehen Sie es hier in Aktion.quelle
event.target.id
(für mich haben sowohl Firefox als auch IE diese ausgelöst), eine großartige Lösung ist, die in allen drei Hauptbrowsern funktioniert.Im Allgemeinen ist es einfacher, die Dinge zu organisieren, wenn Sie Ihren Code und Ihr Markup trennen. Definieren Sie alle Ihre Elemente und definieren Sie dann in Ihrem JavaScript-Abschnitt die verschiedenen Aktionen, die für diese Elemente ausgeführt werden sollen.
Wenn ein Ereignishandler aufgerufen wird, wird er im Kontext des Elements aufgerufen, auf das geklickt wurde. Also die Kennung dies wird sich auf das DOM - Element , dass Sie angeklickt. Über diesen Bezeichner können Sie dann auf Attribute des Elements zugreifen.
Beispielsweise:
quelle
VERWENDUNG VON PURE JAVASCRIPT: Ich weiß, dass es spät ist, aber für die zukünftigen Menschen kann es helfen:
Im HTML-Teil:
Im Javascipt Controller:
Auf diese Weise müssen wir die 'id' des Elements zum Zeitpunkt des Aufrufs der Javascript-Funktion nicht binden.
quelle
this
als Parameter übergeben habeonClick
(eigentlich nicht mit onClick, sondern mit onChange, ist das vielleicht das Problem?). Ich habe auch ein bisschen nachgesehen und es scheint viel Verwirrung über dieseevent
Variable zu geben - ist es ein "impliziter" Parameter oder muss es explizit als Argument angegeben werden (dhfunction reply_click(event)
was ich auch in gesehen habe? einige Standorte)? Ist es nur verfügbar, wenn der Ereignis-Listener überaddEventListener
... zugewiesen wird? Ich habe herumgespielt, konnte es aber nicht zum Laufen bringen.(Ich denke, die
id
Attribut muss mit einem Buchstaben beginnen. Könnte falsch sein.)Sie könnten sich für eine Eventdelegation entscheiden ...
... aber dafür müssen Sie sich mit dem verrückten Eventmodell relativ wohl fühlen.
quelle
e
Argument in allen guten modernen Browsern automatisch generiert. Wenn dies nicht der Fall ist, müssen wir uns mit IE6-8 befassen, das stattdessen dieses nützliche Objekt über bereitstelltwindow.event
.quelle
quelle
Wie es ohne Inline-JavaScript geht
Es wird allgemein empfohlen, Inline-JavaScript zu vermeiden, aber es gibt selten ein Beispiel dafür.
Hier ist meine Art, Ereignisse an Schaltflächen anzuhängen.
Ich bin nicht ganz zufrieden damit, wie lange die empfohlene Methode mit einer einfachen Methode verglichen wird
onClick
Attribut wird.Nur Browser 2014
Nur 2013 Browser
Browserübergreifend
Browserübergreifend mit jQuery
Sie können dies ausführen, bevor das Dokument fertig ist. Wenn Sie auf die Schaltflächen klicken, funktioniert dies, da das Ereignis an das Dokument angehängt wird.
Hier ist eine jsfiddle
Aus irgendeinem seltsamen Grund die
insertHTML
funktioniert Funktion nicht, obwohl sie in allen meinen Browsern funktioniert.Sie können immer ersetzen
insertHTML
mit ,document.write
wenn Sie nichts dagegen ist es nicht NachteileQuellen:
quelle
Wenn Sie der onclick-Funktion keine Argumente übergeben möchten, verwenden Sie einfach
event.target
, um das angeklickte Element abzurufen :quelle
Mit reinem Javascript können Sie Folgendes tun:
Überprüfen Sie es auf JsFiddle
quelle
Sie können es einfach so machen:
quelle
id=obj;
und einfach habenalert(obj);
quelle
quelle
Taste 1 Taste 2 Taste 3
quelle
Entschuldigung, es ist eine späte Antwort, aber es ist sehr schnell, wenn Sie dies tun: -
Dadurch wird die ID aller angeklickten Schaltflächen angezeigt.
Wenn Sie nur den Wert der Schaltfläche erhalten möchten, auf die an einer bestimmten Stelle geklickt wurde, legen Sie sie einfach in einen Container wie
und ändern Sie den Code in: -
ich hoffe das hilft
quelle
Dadurch wird die ID des Elements protokolliert, auf das geklickt wurde: addFields.
quelle