2

私はオブジェクトをループしており、条件付きで結果を慰めています。しかし、2つだけを取得する代わりに、3つの結果すべてを取得しています。コードの何が問題になっていますか?

何か提案はありますか?

私のコード:

 var processModules = function (mData) {
    var lcalmData = obj = {'content':'new content','navigation':'newNavigation','form':'newform'}; var title;
    $('body').append(
        $.each(lcalmData, function (i,val) {
            title = (i === 'content' || i === 'navigation')  ? $('<div />') : i === 'form' ? $('<form />') : null;
            return title;
        } )  
    )
}

jsfiddle

4

3 に答える 3

3

この行には問題があります:

val === 'content' || 'navigation'

valがこれらの値のいずれかと等しいかどうかを確認するつもりだったと思いますか? ) しかし、この方法では機能しません:===オペレーターの優先順位は||1 よりも高いため、基本的には...

(val === 'content') || 'navigation'

... つまり、常に真の値です。

あなたが意図したものは、次のように簡単に書き直されるかもしれません...

... (i === 'content' || i === 'navigation')

...チェックする必要があるのはインデックス(キー)であるため、値ではありません。

于 2012-08-15T10:03:47.410 に答える
1

http://jsfiddle.net/WsQ6K/2/

i の代わりに val を使用していました。つまり、値ではなく属性名です。

于 2012-08-15T10:22:23.393 に答える
0

これを行う必要があります:

var title = ( val === 'content' || val === 'navigation' ) ? val.type  : null;

大括弧 () はおそらく必要ありません。val === 'content' または 'navigation' が 'true' かどうかをテストしています。実際、後者は常に真実です。

于 2012-08-15T10:04:46.583 に答える