2017-05-17 18 views
0

add()という関数内にこのJavaScriptコードがあります。動的に追加された要素は表示されませんonChange

var newinput = document.createElement('div'); 
newinput.innerHTML = "<br><input type='file' id='" + counter + 
"'name='filename[" + counter + 
"]' accept='image/jpeg' onchange='add()'>"; 
document.getElementById('asd').appendChild(newinput); 

しかし、その代わりに、私はこの新しい関数やりたいこのinnerHTMLプロパティの:これまで

var newinput = document.createElement('input'); 
newinput.id=x; 
newinput.type="file"; 
newinput.name="filename"; 
newinput.accept="image/jpeg"; 
newinput.onchange=add(); 

を、新しい機能は、最初の関数のinnerHTMLのような入力を作成しますが、追加されることはありませんonchangeプロパティ(およびフル作成した入力にもdisapearsは、私はコメントする必要はあり.onchange()

私はのcreateElementのVARに「.onchange」を追加するかのようなカップルの入力のためのJavaScriptのリスナーを作成することができる方法はありますinput.onchange() = function(){}
ありがとうございます。

+2

もしあなたがonchangeを扱う関数を割り当てたいのであれば、 'newinput.onchange = add;'(括弧なし) – James

答えて

2

現在のところ、add()は関数を返すと予想しています。機能を呼び出すだけしないでください:ここでは

newinput.onchange = add; 

(function() { 
 

 
    function add() { 
 
    console.log("Added."); 
 
    } 
 

 
    function createFileInput(x) { 
 
    var newinput = document.createElement('input'); 
 
    newinput.id = x; 
 
    newinput.type = "file"; 
 
    newinput.name = "filename"; 
 
    newinput.accept = "image/jpeg"; 
 
    newinput.onchange = add; 
 
    return newinput; 
 
    } 
 

 
    document.body.appendChild(createFileInput('my-input')); 
 

 
})();


は、あなたが何をしていたの例だと、それがどのように動作するか:

(function() { 
 

 
    function add() { 
 
    return function() { 
 
     console.log("Added."); 
 
    } 
 
    } 
 

 
    function createFileInput(x) { 
 
    var newinput = document.createElement('input'); 
 
    newinput.id = x; 
 
    newinput.type = "file"; 
 
    newinput.name = "filename"; 
 
    newinput.accept = "image/jpeg"; 
 
    newinput.onchange = add(); 
 
    return newinput; 
 
    } 
 

 
    document.body.appendChild(createFileInput('my-input')); 
 

 
})();

+0

私はhtmlデバッガでonchangeに気付かなかったので、それはどのように動作するかを考え出しただけです。D –

+0

あなたは大歓迎です! – Ricky

関連する問題