2016-05-14 185 views
0

我有一個javascript代碼,它動態地添加一個元素併爲它添加事件處理程序。
當添加元素時,會調用此事件處理程序(並消失)。
當我通過檢查器看到動態添加的元素(查看事件處理程序是否添加成功)我找不到onchnage="texttol(eletext)"函數添加它。附加事件處理程序動態添加元素

eletext = document.createElement("input"); 
eletext.type="text"; 
eletext.placeholder = "Type Here"; 
eletext.onchange=texttol(eletext); 
event.target.appendChild(eletext); 
+0

jQuery使用'.live()',而不是'。對()'來解決你所描述的情況。即使你不使用JQuery,你也可以看看它是如何實現的。 – Felix

+0

分配'onchange'屬性不會更改DOM中的'onchange'屬性。 – zzzzBov

+0

@Felix,'live'已被棄用一段時間了。事件代表團是適當的。也就是說,這個問題沒有jQuery標記,所以這不是一個合適的答案。 – zzzzBov

回答

1

通過這一行,您可以調用方法texttol並將其返回的任何內容附加到事件處理函數中。

eletext.onchange=texttol(eletext); 

你需要使用一個封閉

eletext.onchange = function() { texttol(eletext) }; 

甚至更​​好,使用的addEventListener

+0

我試過這些chnages,它的工作! – user3856170

2

添加您的事件處理,一旦元素實際上是在DOM。

var eletext = document.createElement("input"); 
 
eletext.type = "text"; 
 
eletext.placeholder = "Type Here"; 
 
eletext.id = "eletext"; 
 
document.body.appendChild(eletext); 
 

 
eletext.addEventListener('change', function(e) { 
 
    texttol(eletext.value); 
 
}, false); 
 

 
function texttol(str) { 
 
    alert('texttol function passes: ' + str); 
 
}

相關問題