मेरे पास यह लेआउट है जिसे गतिशील रूप से बनाया गया था:
for (let i = 1; i < 10; i++) {
document.querySelector('.card-body').innerHTML += `<div class="row" id="img_div">
<div class="col-12 col-sm-12 col-md-2 text-center">
<img src="http://placehold.it/120x80" alt="prewiew" width="120" height="80">
</div>
<div id="text_div" class="col-12 text-sm-center col-sm-12 text-md-left col-md-6">
<h4 class="name"><a href="#" id="title` + i + `">Name</a></h4>
<h4>
<small>state</small>
</h4>
<h4>
<small>city</small>
</h4>
<h4>
<small>zip</small>
</h4>
</div>
<div class="col-12 col-sm-12 text-sm-center col-md-4 text-md-right row">
</div>
</div>
`
document.getElementById("title" + i).addEventListener('click', function() {
console.log(i)
});
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<div class="card-body">
<!-- person -->
</div>
और मैं घटना को प्रत्येक पर क्लिक करना चाहता हूं h4 class="name"
और i
संबंधित संख्या के साथ एक लॉग दिखाता हूं ।
हालाँकि, console.log
केवल अंतिम i
संबंधित ( i=9
इस मामले में) दिखाता है, और अन्य i
संख्याओं के साथ काम नहीं करता है । ऐसा क्यों होता है? मुझे क्या करना होगा?
for
पाश के बाद उन तत्वों को घटनाओं को लागू करने के लिए एक विधि बुला, लेकिन मुझे नहीं पता। परीक्षण करने के लिए jsField होगा।
.card-body
और जाँच की कि क्या तत्व ( target
) एक एंकर और आईडी है जो साथ शुरू होता है title
।
innerHTML += ...
पहले से मौजूद ईवेंट श्रोताओं को मार रही है, न कि बंद करने की। document.createElement
इसके बजाय उपयोग करें । इस धागे को