1

ajax 経由で読み込まれた隠しフィールドの値に基づいて、div に CSS クラスを割り当てようとしています。

私のコードは、呼び出されたときに隠しフィールドの適切な値を返しますが、結果に関係なく、div には常に同じ css クラスが割り当てられます。

IF ステートメントの構文に何か問題があると思います。

function doneLoading(){

var colorStatus = $('#colorStatus').val();

if(colorStatus = 'RED'){
    $('.circleFrame').addClass('redState'); 
}

else if(colorStatus = 'GREEN'){
    $('.circleFrame').addClass('greenState');   
}

else if(colorStatus = 'YELLOW'){
    $('.circleFrame').addClass('yellowState');  
}

else {
    alert("Something is broken");
}
}
4

2 に答える 2

5

これは、比較=ではなく代入を行っているためです。この種のバグを見つけるには、 http://jshint.com==を使用することをお勧めします。

コードを短くするには、次の代替案を検討してください。

function doneLoading() {
    var color = $('#colorStatus').val().toLowerCase();
    $('.circleFrame').addClass(color + 'State');
}

検証を維持するには、次のようにします。

var colors = {green:1, red:1, yellow:1};

function doneLoading() {
    var color = $('#colorStatus').val().toLowerCase();

    if (colors.hasOwnProperty(color))
        $('.circleFrame').addClass(color + 'State');
    else
        alert("Something is broken");
}
于 2012-10-01T23:58:46.673 に答える
3

比較演算子の代わりに代入演算子を使用しています。

試す

if(colorStatus === 'RED'){
    $('.circleFrame').addClass('redState'); 
}

代わりは。(他の色も同様です。)

于 2012-10-01T23:57:17.363 に答える