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.
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
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.
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.
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