Tôi đã bố trí này được tạo động:
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>
Và tôi muốn nhận được sự kiện nhấp vào từng sự kiện h4 class="name"và hiển thị một bản ghi với số iliên quan.
Tuy nhiên, console.logchỉ hiển thị các iliên quan cuối cùng ( i=9trong trường hợp này) và không hoạt động với các isố khác . Lý do tại sao điều này xảy ra? Tôi phải làm gì đây?
forvòng lặp của bạn gọi một phương thức để áp dụng các sự kiện cho các yếu tố đó, nhưng tôi không biết. sẽ jsFiddle để kiểm tra.
.card-bodyvà kiểm tra xem phần tử ( target) có phải là một neo với và ID bắt đầu bằng không title.
innerHTML += ...giết chết người nghe sự kiện được thiết lập trước đó, không phải là đóng cửa. Sử dụng document.createElementthay thế. Xem chủ đề này