2016-05-26 23 views
-1

Ich habe ein Problem mit diesem Code, wenn ich auf die Schaltfläche klicken, sollte es die Funktion "Hallo" tun und eine Warnung öffnen, aber es funktioniert nicht.Javascript Funktion Anruf mit onclick

function hello(){ 
 
    alert("hi"); 
 
    } 
 

 
document.getElementById("one").onclick = hello();
<button id="one">Click me </button>

Ich weiß, dass ich einfach so

button onclick="hello()";
tun könnte, aber ich brauche es mit der JavaScript-Version zu arbeiten. Grundsätzlich meine Frage ist: Gibt es eine Möglichkeit, die Funktion "Hallo" zu öffnen, wenn ich auf den Button klicke, ohne den Onclick in den Button-Tag zu setzen ??

+4

Die Funktion nicht aufrufen, einfach die Referenz zuweisen: '= Hallo;' – trincot

+1

nicht onclick zuweisen, .addEventListener verwenden ('click', hallo); stattdessen. Ich werde keine Antwort zu erklären, warum, aber Sie können es leicht herausfinden. – AxelH

Antwort

2

Dies ist ein häufiges Problem, aber ich konnte keine kanonische Antwort finden, zu der Sie verlinken.

Ihre Ausgabe dieser Zeile:

document.getElementById("one").onclick = hello() 

die die Funktion hello weist dann den Rückgabewert dieser Funktion zu onclick ausführt.

Sie wollen wirklich diese:

document.getElementById("one").onclick = hello; 

, die eine Funktion Verweis auf die OnClick Eigenschaft zuordnet. Die Verwendung von onclick ist ziemlich veraltet, und die Verwendung von addEventListener wird aus einer Reihe von Gründen empfohlen.

+0

[So] (http://stackoverflow.com/a/3007402/542251) :) – Liam

1

Sie müssen der Eigenschaft onclick eine Funktion zuweisen.

Sie sind sofort die hello Funktion aufrufen und den Rückgabewert zuweisen (die undefined ist).

Geben Sie () nicht nach dem Funktionsnamen ein.

document.getElementById("one").onclick = hello; 
Verwandte Themen