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ố i
liên quan.
Tuy nhiên, console.log
chỉ hiển thị các i
liên quan cuối cùng ( i=9
trong trường hợp này) và không hoạt động với các i
số khác . Lý do tại sao điều này xảy ra? Tôi phải làm gì đây?
for
vò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-body
và 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.createElement
thay thế. Xem chủ đề này