Я хочу добавить параметр удаления для файла cookie каждого элемента img
внутри for-loop
. проблема в том, что все ids
всегда из последнего объекта.
что я пробовал:
function listCookies() {
var theCookies = document.cookie.split(';');
var aString = '';
for (var i = 1; i <= theCookies.length; i++) {
(function (i) {
if (theCookies[i - 1].indexOf("pauseCookie-") >= 0) {
cookieArray = theCookies[i - 1].split("=");
theCookie = $.trim(cookieArray[0]);
cookieInfo = $.cookie($.trim(theCookie));
cookieInfo = cookieInfo.split("^");
...
htmlCode = "<div id='pauseDiv-" + theCookie + "'><a href='" + cookiePath + "'>" + cookieTitle + "</a> (" + pauseInfo + ") </div><br />";
$("#cookiesContent").append(htmlCode);
header = document.createElement('img');
header.id = 'delImg' + theCookie;
header.style = 'cursor:pointer';
header.src = delImage;
header.onclick = function () {
alert("#pauseDiv-" + header.id);
//$.removeCookie(theCookie,{path:'/'});
$("#pauseDiv-" + theCookie).html("<div class=\"pauseDivResponse\">Deleted</div>");
}
document.getElementById("pauseDiv-" + theCookie).appendChild(header);
}
})(i);
}
}
listCookies();
alert ("# pauseDiv-" + header.id); всегда печатает последний id из всех элементов img, которые я создал.
Это напрямую не связано с закрытием, но связано с тем, что header
переменной находится в глобальной области. Когда вы объявляете новую переменную, вы должны использовать ключевое слово var
, иначе предполагается, что это свойство глобального объекта (window
).
Если вы включите строгий режим (добавив "use strict";
вверху вашего кода или верхнюю часть функции), вам расскажут об этих ошибках.
Чтобы быть ясным, вам нужно изменить
header = document.createElement('img');
в
var header = document.createElement('img');
(и должен делать то же самое для всех ваших переменных)