У меня есть функция, которую я использовал несколько раз, но в этом случае модификации я, кажется, что-то пропускаю. У меня есть var listHTML
, который я использую в качестве базы для добавления HTML, чтобы я мог обновлять HTML-файл div после завершения цикла for, но по какой-либо причине значение var равно NULL после завершения цикла for. Я думал, что создание ссылки на var за пределами цикла до того, как цикл будет запущен, было достаточно, чтобы сохранить его в памяти до завершения функции ... предположим, нет.Javascript var выпущен рано
Код:
var listHTML = '';
for(var j = 0; j < arr.length; j++)
{
var product = arr[j].split(",");
var key = product[1];
$.ajax({
url:"http://domain.com/dir/get.php?key="+encodeURIComponent(key),
dataType: 'jsonp',
success:function(json){
var i = 0;
while(json[i])
{
listHTML += '<div class="row">';
listHTML += '<div class="image"><img src="'+json[i]["image"]+'"/></div>';
listHTML += '<div class="title">'+json[i]["title"]+'</div>';
listHTML += '<div class="quantity"><input type="number" id="'+key+'" value="'+product[0]+'"/></div>';
listHTML += '<div class="actions"><img src="/_newsite/images/icons/trash.png" onclick="removeFromCart('+"'"+key+"'"+')" title="Remove From Cart/><img src="/_newsite/images/icons/update.png" onclick="updateCart('+"'"+key+"'"+')" title="Update Quantity"/></div>';
listHTML += '</div>';
i++;
}
console.log(listHTML);
},
error:function(){
alert("Error");
},
});
}
console.log(listHTML);
Когда console.log запускается внутри цикл, она возвращает правильное значение, я бы ожидать, но один в конце функции вне для цикла возвращает нуль.
Oh! Duh! Это имеет смысл! Спасибо! – David