2

これが機能しない理由を知っている人はいますか?

$('#screen').css({
  'background-image': [bg_num == 1 ? 'josh' : 'jessi'] + '_background.jpg',
  'background-color': 'red'
 });

背景色は設定されていますが、画像は設定されていません。

この種のことを行うために、Javascript で角括弧を使用する練習はあまりしていません。私が何か間違ったことをしている場合、誰にもヒントがありますか? または、それらの使用に関する適切な説明はありませんか?

編集: 明確にするために、チェック自体は実際に行われています。console.log() で同じことを行うと、「josh_background.jpg」が出力されるためです。このcss設定機能を取り入れていないだけです。

4

1 に答える 1

6

編集:

あなたがしていたことは、値'josh'orを使用して配列リテラルを作成し'jessi'、それに連結'_background.jpg'することであったため、技術的には機能します。

問題は、値の'url()' 一部が欠落していることです。background-image

'background-image': 'url(' + (bg_num == 1 ? 'josh' : 'jessi') + '_background.jpg)',

...しかし()、配列を構築する代わりに、グループ化に使用する必要があります。


元の答え:

グループ化には角括弧の代わりに括弧を使用します。

'background-image': (bg_num == 1 ? 'josh' : 'jessi') + '_background.jpg',

JavaScript で角かっこを使用する唯一の用途は、オブジェクトのプロパティを取得/設定するか、配列リテラルを作成することです。

var arr = []; // An Array literal

arr[10] = 'someArrValue'; // set index 10


var obj = {};  // A plain object literal

obj['prop'] = 'someObjValue';  // set the "prop" property

var key = 'prop2';

obj[key] = 'someOtherObjValue'; // set the property referenced in the "key" variable

...ああ、もちろん正規表現構文で使用されています...

于 2011-01-12T19:15:16.787 に答える