2016-05-14 24 views
0

私は要素を動的に追加し、それにイベントハンドラを追加するjavascriptコードを持っています。
このイベントハンドラは、要素が追加されたときに呼び出され(および消滅します)
(イベントハンドラが正常に追加されたかどうかを調べるために)inspectorを介して動的に追加された要素が表示されたときに、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()'の代わりに '.on()'あなたが記述状況に対処するために使用しています。 JQueryを使用していなくても、JQueryの実装方法を見ることができます。 – Felix

+0

'onchange'プロパティを代入してもDOMの' onchange'属性は変更されません。 – zzzzBov

+0

@Felix、 'live'はいまや非難されています。イベントの委任が適切です。つまり、この質問にはjQueryがタグ付けされていないので、適切な答えではありません。 – zzzzBov

答えて

1

この行では、texttolメソッドを呼び出して、それが何かをイベントハンドラに添付します。

eletext.onchange=texttol(eletext); 

あなたは要素がDOMに実際になるとハンドリング、あなたのイベントを追加addEventListenerを

+0

私はこれらのチャネージを試してみました。 – user3856170

2

を使用し、より良い閉鎖

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

を使用する必要があります。

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); 
 
}

関連する問題