

Javascript Onclick Birden Fazla Createelement İle Oluşturulduğunda Karışıyor.
-
arkadaşlar javascript ile birkaç element oluşturuyorum. bu oluşturduğum elementlere de bir onclick eventi ekliyorum
elementlerin içeriğini xml'den çektiğim için
for (i = 0; i < x.length; i++) { var a = i, baslik; baslik = document.createElement('BUTTON'); baslik.innerHTML = x[i].getElementsByTagName("TITLE")[0].textContent; baslik.onclick = function () {veri(x[a]);}; baslikdiv.appendChild(baslik); }gibi bir kısım var kodlarımda.
açıklamam gerekirse xml içinde başlıkları buton yapıyorum o butona basınca da window.alert(veri) çalışsın istiyorum. fakat gelen veri son başlığın verisi oluyor. yani onclick elemente özel olmuyor direkt tüm butonları etkiliyor. öyle olunca da for içinde sadece aynı eventi değiştiriyor. bu neden böyle oluyor? neden bireysel olarak elementlere onclick veremiyorum?
innerHTML kullanmak bir çözüm olabilir ama DOM kullanarak neden yapamadığımı anlamaya çalışıyorum
addEventListener ile mi yapmam gerekiyor? esasen onclick ile neden yapamadım onu öğrenmek istiyorum, hatam nedir arkadaşlar?
kofcu tarafından 11/Eyl/16 07:35 tarihinde düzenlenmiştir -
for (i = 0; i < x.length; i++) { var baslik; baslik = document.createelement('BUTTON'); baslik.innerHTML = x[i].getElementsByTagName("TITLE")[0].textContent; baslik.setAttribute("id", i); baslik.onclick = function () {veri(x[this.id]);}; baslikdiv.appendChild(baslik); }dener misin
-
dün gece @pSkpt teamviewer ile gelip yardımcı oldu sağolsun. problem dinamik değişkenden dolayı oluyormuş. esasen ben o dinamik değişkenin farkında idim ama değişirken o anki değerini fonksiyon parametresi olarak atamak istedim ama olmadı. @yunusemre hocam senin dediğine benzer bir şekilde fakat id yerine "dataset" kullanarak hallettik işimizi. özetle dinamik değişkeni stabilleştirmek için o anki değerini html elementinin bir attribute'u haline getirdik ve gerektiği zaman kullanılması için içerik fonksiyonunun parametrelerinde değişime gittik.
şöyle ki:
baslik.dataset.veri_id = i;
baslik.onclick = icerik;
dedik
içerik fonksiyonunda da parametreyi şu şekilde aldık:
veri_id = this.dataset.veri_id;
veri = x[veri_id];
gece gece uğraşları için @pSkpt 'a özellikle teşekkürler. @yunusemre 'ye de yardım dilekleri için teşekkürler. senin söylediğin gibi de olur hocam mantık aynı...