变量menuitems
是一个键值对。键包含名称,值包含图像 url。这个想法是将以下 URL 存储在本地存储中。
本地存储变量为key_icon
(key为图片名称)
下面是代码。假设有4个key,account
, sms
, group
and history
。
$.each(menuitems, function(key, value) {
menu_icon_session_name = key+'_icon';
var dataImage = localStorage.getItem(menu_icon_session_name);
//The Div container to load the image
div = "<div class='ui-block-a'><div class='ui-bar' id='div_"+key+"' style='padding:5px'>" +
"<img crossorigin='anonymous' width=150 height=150 id='btn_"+key+"' style='height: 100%; width:100%'>"
"</div></div>";
//Append the div container with empty image
jQuery('#pg_home_content').append(div);
//Based on the local storage load the image
if(dataImage){
console.log('loaded from session');
bannerImg = document.getElementById('btn_'+key);
bannerImg.src = dataImage;
jQuery('#div_'+key).html(bannerImg);
}else{
console.log('loaded from url');
bannerImage = document.getElementById('btn_'+key);
bannerImage.setAttribute('crossOrigin', 'anonymous');
bannerImage.src = value.menu_icon;
bannerImage.onload = function () {
imgData = getBase64Image(bannerImage);
localStorage.setItem(menu_icon_session_name, imgData);
console.log('stored '+menu_icon_session_name);
}
}
});
由于 onload
是异步
变量 menu_icon_session_name
被覆盖,所有图像都存储在最后一个变量 history_icon
.
我想要做的就是将所有 4 个图像加载到单独的本地存储中并在以后使用它......
最佳答案
...stuff...
bannerImage.src = value.menu_icon;
bannerImage.attr('data-my-session-name', menu_icon_session_name);
bannerImage.onload = function () {
imgData = getBase64Image(this);
localStorage.setItem($(this).attr('data-my-session-name'), imgData);
...stuff...
关于javascript - 使用全局变量在循环内调用图像 onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35387534/