Tôi đang sử dụng jQuery để thiết lập một bộ đếm thời gian hoặc khoảng thời gian trên một vài yếu tố để kiểm tra chúng mỗi vài giây. Tôi đã thử thiết lập một bộ đếm thời gian và kiểm tra nếu tôi nên khởi động lại nó, hoặc thiết lập và khoảng thời gian và kiểm tra xem tôi nên dừng nó.javascript hẹn giờ hoặc khoảng thời gian tạo ra trong vòng lặp bằng cách sử dụng đóng cửa
Mặc dù đơn giản, điều này về cơ bản là những gì tôi cần:
var mytimers = new Array();
$('div.items').each(function() {
myID = $(this).attr('id');
mytimers[myID] = setInterval(function() { myFunction(myID) } , 3000)
});
function myFunction(param) {
alert(param);
if (something()) {
clearInterval(mytimers[param]);
}
}
của ID cho các hạng mục lớp là ID_1, ID_2, id_3. Nhưng tôi chỉ nhận được 3 cảnh báo cho tất cả id_3. Trong mã của tôi, tôi bắt đầu cố gắng để vượt qua 'điều này', nhưng vẫn đơn giản hóa nó để tìm ra vấn đề.
Tôi làm cách nào để sao chép biến này sang địa chỉ mới mỗi lần? Tôi biết tôi cần phải sử dụng bao đóng. Nó có vẻ là tham khảo var khác không có mater gì.
tôi đã cố gắng đơn giản hóa nó vào một vòng lặp với giờ như vậy:
function tester(item) {
return function() {
alert(item);
};
}
for(x=1;x<=3;x++) {
setTimeout('(function() { tester(x) })(x)' , 3000);
}
Nhưng tôi nghĩ rằng tôi chỉ làm cho vấn đề của tôi tồi tệ hơn và điều đó dường như không làm gì cả.
Tôi đã tìm kiếm các câu hỏi trước, nhưng hầu hết được lấp đầy với hàng tấn mã phụ thay vì cắt giảm vấn đề cụ thể và được giải quyết theo cách khác. Tôi muốn hiểu cách thức hoạt động tốt hơn bằng cách làm ví dụ này hoạt động. Tôi đã quản lý, trong khi viết này, để tìm ra tôi có thể thiết lập các bộ đếm thời gian với một chức năng giúp đỡ.
function tester(item)
alert(item);
function myTimer(item)
setInterval(function() { tester(item); }, 3000);
for(x=1;x<=3;x++)
myTimer(item);
Làm cách nào để thực hiện điều này nếu không có điều đó? Có cách nào tốt hơn không?
Bạn thực sự cần khai báo * tất cả * biến cục bộ của bạn bằng 'var', bao gồm các chỉ mục vòng lặp. – Pointy