1

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; }

これは、「お気に入りへのクリック/お気に入りリストへのクリック/お気に入りのスターへのクリック」の背後にある基本原則の 1 つです。

4

1 に答える 1

2

フィドル、JQuery での作業例

0. アプリの裏技!: JSON & localStorage

/* 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);
于 2013-02-08T16:03:41.937 に答える