1

JavaScript の複数の場合の省略形の構文は何ですか?

$('#field-'+i+' .name').css({
    top: '30%',
    width: '100%',
    'letter-spacing': i==1 ? '-2.5px' : '-1px',
});

文字間隔には、次のような複数の省略形が必要です。

'letter-spacing': i==1 ? '-2.5px' i==3 ? '-1.5px' : '-1px'
4

6 に答える 6

2

実際、1行のコードで複数のターナリー演算子をインライン化することは悪いことでも悪いことでもありませんが、そこではより読みやすいスタイルを使用できます。

ただし、ここでの私の提案は、特に多くの異なる状態がある場合は、ルックアップオブジェクトまたは配列を使用することです。

var values = ['1px', '-2.5px', '5px', '-1.5px'];

$('#field-'+i+' .name').css({
    top: '30%',
    width: '100%',
    'letter-spacing': values[ i ],
});
于 2012-10-11T22:09:42.717 に答える
1

@ChrisFrancis:表形式の3値バリエーション:

`'letter-spacing': i == 1 ? '-2.5px' 
                 : i == 3 ? '-1.5px'
                 :          '-1px'

この場合、最初の「:」は別の意味で少し混乱するかもしれませんが、味わう季節です

于 2012-10-11T22:14:51.167 に答える
1

ネストされた三項式について話しているようです-私は次のようにインデントする傾向があります:

'letter-spacing': i==1 
    ? '-2.5px' 
    : i==3 
        ? '-1.5px' 
        : '-1px'
于 2012-10-11T22:09:12.713 に答える
1

選択肢がたくさんある場合は、ハッシュを検討してください。

var hash = {
    1: '-2.5px',
    3: '-1.5px'
};

その後:

'letter-spacing': hash[i] || '-1px'

iが整数の場合、ハッシュオブジェクトの代わりに配列を使用できます。ただし、オブジェクトはより柔軟です。

于 2012-10-11T22:10:21.340 に答える
1

:最初の条件文を完成させるためにa が欠けています:

少し役立つように、いくつかの括弧を追加しました。

'letter-spacing': (i == 1) ? '2.5px' : ((i == 3) ? '-1.5px' : '-1px')

于 2012-10-11T22:08:50.383 に答える
1
i === 1 ? '-2.5px' : i === 3 ? '-1.5px' : '-1px'
于 2012-10-11T22:08:52.540 に答える