2016-05-14 143 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); 
 
}

相关问题