Это распространенная проблема.
Вы перезаписываете local_id
в цикле и всегда ссылаетесь на одну и ту же переменную при выполнении кода.Это связано с тем, что JavaScript не имеет области видимости блока , только область действия функции.
Таким образом, чтобы охватить id
, вам нужно вызвать функцию и определить там переменную (или параметр функции).
function createWindow(local_id) {
setTimeout(function () {
window.open("http://www.mysite.com/characterID=" + local_id, "", "win" + local_id, "width=100,height=100,resizable");
}, 3000 * local_id);
}
for (id = 0; id <= 10; id++) {
createWindow(id);
}
Или подобный шаблон будетчтобы функция возвращала функцию в цикл.
function createWindow(local_id) {
return function() {
window.open("http://www.mysite.com/characterID=" + local_id, "", "win" + local_id, "width=100,height=100,resizable");
};
}
for (id = 0; id <= 10; id++) {
setTimeout( createWindow(id) , 3000 * id);
}