2013-11-01 51 views
0

我使用这段代码对我的形象滑块......JavaScript的就是HTML5 LocalStorage搅乱代码

$(文件)。就绪(函数(){

$("#owl-demo").owlCarousel({ 
    jsonPath : 'json/customData.json', 
    jsonSuccess : customDataSuccess, 
    lazyLoad : true 
    }); 

    function customDataSuccess(data){ 
    var content = ""; 
    for(var i in data["items"]){ 

     var img = data["items"][i].img; 
     var alt = data["items"][i].alt; 
     var myclass = data["items"][i].class; 
     var link = data["items"][i].link; 
    localStorage.setItem("imga", img); 
    localStorage.setItem("alta", alt); 
    localStorage.setItem("linka", link); 
     content += "<a href=\""+link+"\"><img data-src=\"" +img+ "\" alt=\"" +alt+ "\" class=\"" +myclass+ "\"></a>" 
    } 
    $("#owl-demo").html(content); 
    } 


}); 

尽快插入localStorage元素脚本不再工作(滑块不出现)...我做错了什么?

+0

您收到任何错误? –

+0

你正在测试什么浏览器?你确认你的浏览器实际上支持localStorage功能吗? – Spudley

+1

其中; s是使用存储数据的代码?你的'setItem'代码存在缺陷...你每次通过'for'循环覆盖同一个存储键 – charlietfl

回答

0

本地存储支持在现代浏览器中

如果您在Internet Explorer 7或以下版本中进行测试,则无法正常工作。

检查HTML5 Web Storage支持的浏览器。

我建议在看Modernizr的检测哪些功能的浏览器支持,并采取相应的行动。我过去所做的是在支持的情况下使用localstorage,如果不支持则使用cookie。 Modernizr

UPDATE

$(document).ready(function() { 

$("#owl-demo").owlCarousel({ 
    jsonPath: 'json/customData.json', 
    jsonSuccess: customDataSuccess, 
    lazyLoad: true 
}); 

function customDataSuccess(data) { 
    var content = ""; 
    for (var i in data["items"]) { 

     var img = data["items"][i].img; 
     var alt = data["items"][i].alt; 
     var myclass = data["items"][i].class; 
     var link = data["items"][i].link; 
     localStorage.setItem("imga" + i, img); 
     localStorage.setItem("alta" + i, alt); 
     localStorage.setItem("linka" + i, link); 
     content += "<a href=\"" + link + "?id=" + i + "\"><img data-src=\"" + img + "\" alt=\"" + alt + "\" class=\"" + myclass + "\"></a>" 
    } 
    $("#owl-demo").html(content); 
} 

});

因此,现在localstorage项目将单独存在,那么您需要在新页面上执行的操作是使用通过URL中的查询字符串传递的id查找localstorage中的项目。

,从查询字符串获取ID,然后查找在localStorage的值可以是这样的新页面上的功能:

function getLocalStorageItem(id) { 

    var img = localStorage.getItem("imga" + id); 
    var alt = localStorage.getItem("alta" + id); 
    var link = localStorage.getItem("linka" + id); 

}

你需要编写的代码获取id参数的查询字符串值,然后将其传递给getLocalStorageItem函数。

显然,这是一个快速的方法 - 你需要优化此。

+0

这两种浏览器都与本地存储兼容 – LitBe

+0

也就是说,您应该养成测试浏览器是否通过modernizr支持它的习惯。这是很好的做法。 @LitBe – dotnethaggis

+0

@LitBe你有工作吗? – dotnethaggis