2

each() オブジェクトの変数から json オブジェクトを解析しようとしています。

たとえば、私はこの長い配列を持っています:

{castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

配列のキーと同じクラスの div があります。例えば:

<div class="castle"></div>
<div class="commercial"></div>
<div class="common"></div>
<div class="cultural"></div>

したがって、各キーの値を class = key のクラスに追加したいと思います

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split
   $("." + a).text(array.a + " hours"); // array.a doesn't work

});

この場合、array.a は配列に存在しないため、各クラスの各キーの値を解析できません。

どうすればこれを解決できますか?

4

3 に答える 3

3

なぜあなたは他の方法でそれをしないのですか?afor..inを使用して、オブジェクトを (それ自体)ループし、設定します。

for (var key in obj) {
    $("div." + key).text(obj[key]);
}

このループ内のセレクターdivは、に等しいクラスを見つけてkey、それに対応する値を追加します。

デモ: http://jsfiddle.net/hungerpain/9z4zj/

しかし、あなたの複雑さを見て、私はあなたの方法が最も簡単であることに同意します. に変更array.aするだけarray[a]です。それだけです。

于 2013-08-03T08:50:34.160 に答える
0

これを試して:

$(document).ready(function () {
    $("body div").each(function () {
        var myarray = {
            castle: "0",
            commercial: "3",
            common: "0",
            cultural: "2",
            dioni: "0",
            holidays: "0",
            island: "2",
            nereides: "2",
            others: "0",
            peninsula: "0",
            thetis: "0"
        }; // the reall long array;

        var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split
        $("." + a).html(myarray[a] + " hours"); // array.a doesn't work
    });
});  

JSFIDDLE デモ

于 2013-08-03T09:06:44.033 に答える
0

array.a の代わりに array[a] を使用する

var obj = {castle: "0", commercial: "3", common: "0", cultural: "2", dioni: "0", holidays: "0", island: "2", nereides: "2", others: "0", peninsula: "0", thetis: "0"}

$("body div").each(function(){
   var array = [] // the reall long array;

   var a = $(this).attr("class").split(' ')[0]; // in case there are two divs, split

   $("." + a).text(obj[a] + " hours"); // array.a doesn't work

});

実際のデモ: http://jsfiddle.net/uNrKy/

于 2013-08-03T09:09:02.027 に答える