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的 Array 文字'jessi',然后将其连接'_background.jpg'起来,因此它在技术上可以工作。

问题是您缺少价值的'url()' 一部分background-image

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

...但是您仍然应该使用()for 分组而不是构造数组。


原答案:

使用括号代替方括号进行分组:

'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 回答