Ich versuche, Parameter an Funktion zu übergeben. Wenn ich auf das Div klicke, wird der übergebene Parameter benachrichtigt

Ich habe 2 Datei

  • index.html
  • script.js

Hier ist was ich versuche

Beispiel 1

index.html

<div id="thediv" >

script.js

window.onload = initialize;

    //bind event listener
        function initialize(){
             document.getElementById("thediv").onclick = myFunction(" something ");
        }
    //end of bind

    //function
        function myFunction(parameter) { alert( parameter ) };
    //end of all function
  • Das Problem ist die Funktion, die ohne Klicken ausgeführt wird

Beispiel 2

index.html

<div id="thediv" onclick="myfunction('something')" >

script.js

function myFunction(parameter) { alert( parameter ) };
  • yap es ist damit fertig, aber das Problem, wenn ich viele Elemente in index.html habe, wird es schmerzhaft sein zu lesen, welches Element welchen Listener hat
  • Ich möchte meinen Code in 3 Abschnitte unterteilen (ähnlich wie in Beispiel 1).
    • die Ansicht (HTML-Element)
    • Das Element hat welchen Listener
    • die Funktion

Was soll ich machen? oder kann ich das machen (Ich möchte keine andere Bibliothek verwenden)

1
ilike 21 Nov. 2013 im 14:10

3 Antworten

Beste Antwort

Ihre erste Lösungslogik ist absolut in Ordnung. Sie müssen nur einen Delegierten zuweisen. Sie rufen die Funktion auf. Machen Sie also so etwas ...

//bind event listener
        function initialize(){
             document.getElementById("thediv").onclick = function () { myFunction(" something "); };    
        }
//end of bind
2
Moumit 21 Nov. 2013 im 10:16

Anstatt zuzuweisen, rufen Sie eine Funktion mit myFunction(); auf Verwenden Sie es so

//bind event listener
 function initialize(){
    document.getElementById("thediv").onclick = function(){
         myFunction(" something ");
   }
 }
2
Sarath 21 Nov. 2013 im 10:15

Wenn Sie () (mit einer beliebigen Anzahl von Argumenten) platzieren, wird eine Funktion aufgerufen. Der Rückgabewert (in diesem Fall undefined) wird dann als Ereignishandler zugewiesen.

Wenn Sie eine Funktion zuweisen möchten, müssen Sie die Funktion selbst übergeben.

...onclick = myFunction;

Wenn Sie ihm beim Aufruf Argumente geben möchten, ist es am einfachsten, eine neue Funktion zu erstellen und diese zuzuweisen.

...onclick = function () {
        myFunction("arguments");
    };
3
Quentin 21 Nov. 2013 im 10:15