使用方括号来连接Javascript中的东西?

Ian*_*lor 2 javascript css jquery concatenation square-bracket

任何人都知道为什么这不起作用?

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

背景颜色正在设置,但图像不是.

我没有太多练习在Javascript中使用方括号来完成这种事情.如果我做错了什么,任何人都有提示吗?或者对它们的使用没有很好的解释?

编辑:只是要清楚,检查本身实际上正在发生,因为如果我在console.log()中做同样的事情输出"josh_background.jpg"就好了.它只是没有采用这个CSS设置功能.

use*_*716 6

编辑:

你正在做的是创建一个带有值的数组文字,'josh'或者'jessi'然后连接'_background.jpg'到它,所以它在技术上会起作用.

问题是你错过'url()'background-image价值的一部分.

'background-image': 'url(' + (bg_num == 1 ? 'josh' : 'jessi') + '_background.jpg)',
Run Code Online (Sandbox Code Playgroud)

...但你仍然应该使用()for分组而不是构造一个数组.


原始答案:

使用括号分组而不是方括号:

'background-image': (bg_num == 1 ? 'josh' : 'jessi') + '_background.jpg',
Run Code Online (Sandbox Code Playgroud)

您在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
Run Code Online (Sandbox Code Playgroud)

...哦,他们当然使用正则表达式语法...