folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Javascript Onclick Birden Fazla Createelement İle Oluşturulduğunda Karışıyor.



Javascript Onclick Birden Fazla Createelement İle Oluşturulduğunda Karışıyor.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    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

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yunusemre
    yunusemre's avatar
    Kayıt Tarihi: 22/Ağustos/2016
    Erkek

     

    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

     

     

     


    "Programcılar saatler boyunca çalışmak zorunda kalmalarına engel olacak sistemler tasarlamaya saatler boyunca uğraşırlar." David Allen
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    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ı...


    ben de sevgiden yanayım...
Toplam Hit: 840 Toplam Mesaj: 3
javascript tag_event tag_onclick tag_createelement