Tôi cố gắng để gọi một setTimeout từ bên trong một callback setInterval:Làm thế nào để giải quyết Var ra khỏi phạm vi trong vòng setTimeout gọi
function callback()
{
//assign myVar
var myVar = document.getElementById("givenID");
//...
//now wait 2 secs then call some code that uses myVAr
setTimeout("myVar.innerHTML = 'TEST'", 2000);
}
setInterval("callback();", 10000);
setInterval việc như mong đợi nhưng cuộc gọi setTimeout là không. Tôi đoán vấn đề có liên quan đến thực tế là tôi đang tham chiếu một biến (myVar) không nằm trong phạm vi.
Cách tốt nhất để giải quyết vấn đề này là gì?
Sử dụng đóng cửa như tôi chỉ ra dưới đây sẽ làm việc xung quanh này, việc đóng cửa bên trong có quyền truy cập vào phạm vi đóng cửa bên ngoài. – FlySwat
Tôi phải bỏ lỡ điều gì đó - bạn đang cố gắng tiết kiệm một số hiệu suất bằng cách tính toán myVar? Tại sao không phải là setTimeout ("document.getElementById (" givenID "). InnerHTML = 'TEST'", 2000); ? –
Không sử dụng dấu ngoặc kép với setTimout/setInterval, nó buộc thời gian chạy JS gọi lệnh Eval, chạy mã trong ngữ cảnh mới, do đó vấn đề phạm vi. – FlySwat