2016-11-15 15 views
10

Utworzono element HTML <input> przy użyciu Javascript. Teraz chcę dynamicznie dodać do tego elementu procedurę obsługi zdarzeń onblur. Jednak nie rozumiem, w jaki sposób mogę przekazać utworzony element jako argument do funkcji. Oto mój kod:Jak przekazać element do obsługi zdarzeń w javascript

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

W powyższym kodzie widać, że element został utworzony. Teraz chcę przekazać ten element do hello_function. Jak mogę to zrobić?

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

'hello_function.bind (element)'. Proponuję również użyć '.addEventListener' zamiast' .onblur' – Rajesh

+0

Nie potrzebujesz niczego przekazywać? Możesz już uzyskać dostęp do tego elementu wewnątrz 'hello_function' poprzez' this' lub 'event.currentTarget'. – Bergi

Odpowiedz

8

Aby to osiągnąć można zawinąć wywołanie hello_function w anonimowej funkcji opakowania i dostarczyć this argumentu:

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

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

pamiętać także preferowanego wykorzystania addEventListener nad onblur.

+0

Z ciekawości, jeśli chcę uzyskać dostęp do obiektu 'event', jak również wewnątrz' hello_function() ', jak by to zostało przekazane. – asprin

+1

@asprin dodaj dodatkowy parametr zdarzenia do hello_function() i do addEventListener. Demo https://jsfiddle.net/xp5we163/82/ – Alexis

+0

A więc byłoby to "hello_function (event, this);" a deklaracja byłaby "function hello_function (evt, element) {....}"? – asprin

1

Spróbuj tego. przekazując innej zmiennej do funkcji,

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

proponuję używać addEventListener, także myślę, że trzeba dołączyć utworzonego elementu do dokumentu, coś takiego:

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