2016-11-04 12 views
0

こんにちは、動的にテーブルを作成しましたが、うまくいきましたが、imageIdをクリックする必要があります。だから、私がやったことです:動的に作成された画像のonclick関数が機能していません

document.getElementById("imageId").addEventListener("click", function() {  
    alert("hello");  
}); 

それが動作していない、私はJavaScriptを使用してのみ、任意のjqueryのを必要としません。

動的にコードを作成するテーブルを以下に示します。うまくいきます。

var body = document.body, 
    tbl = document.createElement('table'), 
    tableId = document.createAttribute('id'); 

tbl.style.width = '100%'; 

for (var i = 0; i < 3; i++) { 
    var tr = tbl.insertRow(); 
    tr.style.height= '40px'; 
    var timetd = tr.insertCell(); 
    var tdcompany = tr.insertCell(); 
    var chatsymbol = tr.insertCell(); 
    var amounttd = tr.insertCell(); 
    tdcompany.innerHTML = "abc"; 
    timetd.innerHTML = "ss"; 
    chatsymbol.innerHTML = '<img src=\'images/iproseIcon2.png\' width= "35%" margin-top="10px"; >'; 
    amounttd.innerHTML = total + '<img id="imageId" src=\'images/iconarrowright.png\' >'; 
} 
+0

私の推測では、イメージがDOMに追加される前に 'addEventListener'が呼び出されていると思います。あなたがコードスニペットの実行順序を知る必要があることを確認する。 – BetaRide

+0

しようとする別のパターンは、イベントリスナーをimg自体に直接追加するのではなく、親要素(既にページ上にある)に追加することです。 – Sgnl

+0

すでに同様の質問があり、問題は解決しました。 [質問](http://stackoverflow.com/questions/14258787/add-event-listener-on-elements-created-dynamically)を参照してください。 –

答えて

0

あなたはこのコードをしようとした場合:

var myElement = document.getElementById("imageId"); 
if (myElement) { 
     document.getElementById("imageId").addEventListener("click", function() { 

    alert("hello"); 

}); 
} else { 
    alert("Element does not exist yet"); 
} 

あなたは要素がまだ存在しないことを知らせる警告が表示されます。ハンドラを追加しようとすると、要素が存在することを確認する必要があります。その目的のためにロードハンドラを使用することができます。

0

これらを試してみてください。それは私のために働いているダイナミックな画像でうまくいくことを願っています。 'img_id'の代わりに を入力すると、これらの画像のIDをクリックすると正常に動作します。

$('#img_id').on('click', function() { 
      alert("Image Success"); 
    }); 
関連する問題