HTML5 localStorage:大JSON,特定值作为更改CSS(收藏夹列表)的条件

HTML5 localStorage: Big JSON, specific value as condition to change CSS (favorite list)

本文关键字:CSS 收藏夹 列表 条件 localStorage JSON HTML5      更新时间:2023-09-26

给定localStorage中的一个大型JSON表和一个给定的键,如何访问关联的值,并将其用作CSS的条件?

给定以下JSON:

var data = [ 
{ 'myKey': 'A', 'status': 0 },
{ 'myKey': 'B', 'status': 1 },
{ 'myKey': 'C', 'status': 1 },
{ 'myKey': 'D', 'status': 1 }
];

以下html进行样式化:

<p id="A">AA</p>
<p id="B">BB</p>
<p id="C">CC</p>
<p id="D">DD</p>

以下css

.status1 { color: green; }
.status0 { color: red; }

这是"点击最爱/最爱列表/最爱的明星"背后的基本原则之一。

关于fiddle的工作示例,JQuery

0.应用程序技巧!:JSON&本地存储

/* To store JSON in localStorage, you compress it as string */
    localStorage["results"] = JSON.stringify(data); // or lS.restults
/* Whenever you want to work on it, need to uncompress the JSON */
    var data = JSON.parse(localStorage["results"]);

1.创建元函数:getJsonVal()

//META.Fn: pullVal
function getJsonVal(json, itemId) {
    for (var i in json) {
        if (json[i].myKey == itemId) {
            return json[i]; 
        }
    }
}

2.函数在注入CSS类之前检查JSON值

//META.Fn: loadSwitch [check localStorage & set CSS
function loadSwitchCSS($set, i) {
    setTimeout(function () {
        var myID = $set.eq(i).attr('id'); // a. Get key [my case: from the html ID]
        alert("look at:"+ myID);
        var val = getJsonVal(data, myID).status;
        // alert(data);
        if (val == 1) { // c. CSS remove-add: so if...else... CSS
            $set.eq(i).removeClass().addClass('status1');
        } else {
            $set.eq(i).removeClass().addClass('status0')
        }
        if (i < $set.length - 1) {
            loadSwitchCSS($set, i + 1);
        }
    }, 100);
}

3.加载时启动功能:

loadSwitchCSS($('p'), 0);