0

オブジェクトをループして最初に要素を取得し、次に要素の値をループして CSS を変更できるようにするスクリプトを作成しています。スクリプトは次のとおりです。

$(document).ready(function() {
var carParts = {
    doors: {
        flDoor: 'LOCKED',
        blDoor: 'LOCKED',
        frDoor: 'LOCKED',
        brDoor: 'LOCKED'
    }
}
var lights = 'OFF';
if (lights === 'OFF') {
    $('.lights').css("display", "none");
}

for(var i in carParts.doors) {
    for(var key in carParts.doors) {
        var value = carParts.doors[key];
        console.log(value);
        if (value === 'locked') {
            $('.'+i+'-open').css("display", "none");
        }
    }
}
})

したがって、carparts.door オブジェクトをループして、実際の flDoor、blDoor、frDoor、brDoor を取得したいと考えています。これらの名前は、適切なクラス名を割り当てるために最後の jquery 行で必要です。ただし、実際の値がロックされていない限り、その行を発火させたくありません。私はjavascriptを使い始めたばかりで、まだ学んでいます。コードに関するフィードバックをお待ちしております。

4

1 に答える 1

1

Working FIDDLE Demo

LOCKED大文字です。小文字と比較しています。これを試して:

if (value === 'LOCKED') {
    //
}

そして、なぜ 2 つのループがあるのですか? 1つで十分です。

HTML

<div class="flDoor-open">flDoor</div>
<div class="blDoor-open">blDoor</div>
<div class="frDoor-open">frDoor</div>
<div class="brDoor-open">brDoor</div>

JavaScript

$(function () {
    var carParts = {
        doors: {
            flDoor: 'OPENED',
            blDoor: 'OPENED',
            frDoor: 'LOCKED',
            brDoor: 'LOCKED'
        }
    };

    for (var key in carParts.doors) {
        var value = carParts.doors[key];

        if (value === 'LOCKED') {
            $('.' + key + '-open').css("display", "none");
        }
    }
});
于 2013-05-16T14:40:59.667 に答える