2016-11-15 3 views
10

Ich habe ein <input> HTML-Element mit Javascript erstellt. Jetzt möchte ich diesem Element dynamisch einen onblur Event-Handler hinzufügen. Allerdings verstehe ich nicht, wie ich das erstellte Element als Argument an die Funktion übergeben kann. Hier ist mein Code:Wie können wir ein Element zu Event-Handler in Javascript übergeben

element = document.createElement("input"); 
element.onblur = hello_function; 

Im obigen Code können Sie sehen, dass das Element erstellt wird. Jetzt möchte ich dieses Element an hello_function übergeben. Wie kann ich das machen?

function hello_function(element) { 
    alert(element); 
} 
+1

'hallo_function.bind (element)'. Außerdem würde ich vorschlagen, dass Sie ".addEventListener" anstelle von ".onblur" verwenden. – Rajesh

+0

Sie müssen nichts weitergeben? Sie können bereits auf dieses Element innerhalb der 'hallo_function' über' this' oder 'event.currentTarget' zugreifen. – Bergi

Antwort

8

Um dies zu erreichen Sie den hello_function Anruf in einem anonymen Funktion Wrapper können wickeln und stellen das this Argument:

element = document.createElement("input"); 
 
element.addEventListener('blur', function() { 
 
    hello_function(this); 
 
}); 
 
document.body.appendChild(element); 
 

 
function hello_function(element) { 
 
    console.log(element); 
 
}

Auch die bevorzugte Verwendung von addEventListener über onblur beachten.

+0

Aus Neugier, wenn ich auf das 'Ereignis'-Objekt innerhalb' Hallo_Funktion() 'zugreifen möchte, wie würde das übergeben werden. – asprin

+1

@asprin fügen einen zusätzlichen Ereignisparameter zur hello_function() und addEventListener hinzu. Demo https://jsfiddle.net/xp5we163/82/ – Alexis

+0

Also wäre es 'hallo_function (event, this);' und die Deklaration wäre 'function hallo_function (evt, element) {....}'? – asprin

1

versuchen Sie es so. die andere Variable in einer Funktion übergeben,

var something="hello"; 
 
var element = document.createElement("input"); 
 
    element.addEventListener('blur' , function() 
 
          { 
 
    hello_function(something); 
 
    
 
    }) 
 
document.body.appendChild(element) 
 

 
function hello_function (element){ 
 
     alert(element); 
 
}

1

Ich schlage vor, addEventListener zu verwenden, auch ich glaube, Sie müssen das erstellte Element an das Dokument angehängt werden, etwa so:

var elem = document.createElement("input"); 
if (elem) { 
    elem.addEventListener('blur', hello_function, false); 
} 
document.body.append(elem); 
function hello_function(element) { 
    alert(element); 
} 
Verwandte Themen