javascript - 使用全局变量在循环内调用图像 onload

标签 javascript local-storage onload

变量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/

相关文章:

forms - 自动点击/提交 Paypal 按钮?

javascript - 如何创建一个 Angular 分量的独立实例

javascript - 在 Liferay 中添加非 http only cookie

javascript - HTML <select> JQuery .change 不工作

Javascript:在 'onload' 事件之后应用的事件处理程序如何处理页面完全加载之前发生的事件?

javascript - 跨浏览器 javascript 加载回调 : Is there a better way than using iframes?

javascript - 将函数从 getActiveSheet() 更改为 getSheetByName ("mySheet")

javascript 本地存储 Visual Studio

caching - Bloodhound 不会将远程获取的数据缓存在本地存储中

javascript - 单击按钮时添加或清除 localStorage 并在 html 中显示值