füge einem div ein onclick-Ereignis hinzu

Lesezeit: 3 Minuten

Benutzer-Avatar
OBERTON

Ich weiß nicht, ob das erlaubt oder überhaupt möglich ist. Ist es möglich, ein div-Element mit einem onclick-Ereignis zu erstellen, sodass das Ereignis ausgeführt wird, wenn auf eine beliebige Stelle im div-Bereich geklickt wird?

Bsp. JAVASCRIPT:

var divTag = document.createElement("div");
divTag.id="new-ID"; 
var onClickCommand = "printWorking()"   //printworking is another method that simply print "I'm working" to the console
divTag.onclick = onClickCommand;
console.log("onclick command added");
console.log(divTag.onclick);
parentDiv.appendChild(divTag); //This simply adds the div tag to the page.

HTML generiert:

 <!--<div id="new-ID">-->

 whatever content I decide to add to the divTag.innerHTML

Ich bemerke, dass kein Onclick-Befehl zum generierten Div durchgeht. Liegt es daran, dass es nicht erlaubt ist?

Also 2 Fragen dann.

1:Ist es möglich, einem Div einen Onclick hinzuzufügen, der auftritt, wenn auf einen beliebigen Bereich des Div geklickt wird? 2: Wenn ja, warum geht dann die Onclick-Methode nicht zu meinem div durch.


Wie sehr seltsam:

divTag.setAttribute("onclick", "printWorking()");

Oben funktioniert einwandfrei.

Alle unten geben den Onclick nicht an das div weiter.

divTag.onclick=printWorking;

divTag.onclick="printWorking";

divTag.onclick="printWorking()";

Es wurden auch mehrere andere Varianten ausprobiert.

  • Es scheint, dass die manuelle Einstellung von onclick nicht wie beabsichtigt funktioniert. Ich muss stattdessen .setAttriubte verwenden

    – OBERTON

    2. August 2011 um 9:44 Uhr

  • @feeela. Ich habe gesucht. Es gibt mehrere Beispiele, die nicht relevant erscheinen, oder ich habe es selbst versucht und keine Wirkung gehabt. Der Grund dafür scheint im Zusammenhang mit meinem obigen Kommentar zu stehen

    – OBERTON

    2. August 2011 um 9:48 Uhr

  • Wenn Sie das ‘setAttribute’ in eine Antwort eingefügt hätten, hätte ich es erhöht. Also +1 für die Frage mit Antwort.

    – Paskal

    7. Juni 2013 um 10:13 Uhr

Benutzer-Avatar
QUentin

Ist es möglich, Onclick zu einem Div hinzuzufügen und es auftreten zu lassen, wenn auf einen beliebigen Bereich des Div geklickt wird?

Ja … obwohl es mit Vorsicht zu genießen ist. Stellen Sie sicher, dass es einen Mechanismus gibt, der den Tastaturzugriff ermöglicht. Bauen Sie auf Dinge, die funktionieren

Wenn ja, warum geht die Onclick-Methode dann nicht zu meinem div durch.

Sie weisen eine Zeichenfolge zu, wo eine Funktion erwartet wird.

divTag.onclick = printWorking;

Es gibt jedoch schönere Möglichkeiten, Ereignishandler zuzuweisen, obwohl sich ältere Versionen von Internet Explorer so stark voneinander unterscheiden, dass Sie eine Bibliothek verwenden sollten, um sie zu abstrahieren. Es gibt genügend von sehr kleine Ereignisbibliotheken und jede größere Bibliothek jQuery) verfügt über eine Ereignisbehandlungsfunktion.

Allerdings gibt es jetzt im Jahr 2019 ältere Versionen des Internet Explorers in der Praxis nicht mehr, sodass Sie direkt darauf zugreifen können addEventListener

  • Sind Klammern dann nicht erforderlich?

    – OBERTON

    2. August 2011 um 9:46 Uhr

  • Wenn es Klammern gäbe, wäre es eine Funktion Anruf und der Rückgabewert würde anstelle der Funktion selbst zugewiesen.

    – QUentin

    2. August 2011 um 9:47 Uhr


  • Das macht jetzt so viel Sinn. Ich habe das mehrmals an anderer Stelle in meinem Code gemacht und hatte keine Ahnung, was los war.

    – OBERTON

    2. August 2011 um 9:56 Uhr

Benutzer-Avatar
Digitales Flugzeug

Weisen Sie den Onclick wie folgt zu:

divTag.onclick = printWorking;

Die onclick-Eigenschaft akzeptiert bei der Zuweisung keine Zeichenfolge. Stattdessen nimmt es eine Funktionsreferenz (in diesem Fall printWorking).
Das onclick-Attribut kann eine Zeichenfolge sein, wenn es in HTML zugewiesen wird, z <div onclick="func()"></div>aber dies wird im Allgemeinen nicht empfohlen.

  • Warum wird es nicht empfohlen?

    – Andreas S

    17. Mai 2013 um 16:00 Uhr


Alles funktioniert gut. Sie können divtag.onclick nicht verwenden, da das Attribut “onclick” nicht existiert. Sie müssen dieses Attribut zuerst mit .setAttribute() erstellen. Schau dir das an
http://reference.sitepoint.com/javascript/Element/setAttribute . Sie sollten zuerst die Dokumentation lesen, bevor Sie anfangen, “-” zu geben.

1130670cookie-checkfüge einem div ein onclick-Ereignis hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy