v2.5.2
Giriş yap

Javascript ile oluşturduğum butonun onclick olayı fonksiyonu bulamıyor

ufukart
466 defa görüntülendi

JSON'dan gelen verileri bir tablo olarak göstermeye çalışıyorum.
Son sütunda bir de buton oluşturuyorum.

let text = "<table class='table table-bordered table-striped table-sm' id='liste'>"
  	for (let x in JSONObject) {
		text += "<tr><td><button onClick='adressec(" + JSONObject[x].id + ")' id='adressec(" + JSONObject[x].id + ")' class='btn'>Seç</button></td></tr>";
  	}
  	text += "</table>"
  	
//Adresleri ve butonu sayfaya bastım.
document.getElementById("address").innerHTML = text;

//Fonksiyonu oluşturdum
function adressec(adresid) {
    console.log(adresid);
}

Buton onClick olduğunda adressec(8) fonksiyonu çağrılsın istiyorum, fakat

Uncaught ReferenceError: adressec is not defined
at HTMLButtonElement.onclick

hatası alıyorum.

Fonksiyonu oluşturduğum halde bulamıyor.

Neyi eksik/yanlış yapıyorum acaba?

Cevap yaz
Cevaplar (2)
tayfunerbilen
1061 gün önce

ben şu şekilde deneyince bir hata almıyorum, ayrıca bir deneyip test etme şansın oldu mu?

<div id="list"></div>

<script>
    const data = [
        {id: 1},
        {id: 2},
        {id: 3},
        {id: 4},
        {id: 5}
    ]
    let listDiv = document.getElementById('list'),
        texts = ''
    for (let item of data) {
        texts += `<div onclick="adressec(${item.id})">${item.id} idli div</div>`
    }
    listDiv.innerHTML = texts;

    function adressec(i) {
        console.log('tıklanan değer =' + i);
    }
</script>
ufukart
1061 gün önce

Tayfun hocam cevabınız için çok teşekkür ederim.
Bahsettiğim işlemleri ve fonksiyonu $(document).ready(function(){} içerisinde yapıyordum.
Sanırım dışında olması gerekiyor. Fonksiyonu dışarı alınca sorun çözüldü.
Tekrar teşekkür ederim.