为什么这条线工作
$('#body-image').css("background-image", 'url('+ backgroundimage +')');
但不是这个
$('#body-image').css("background-image", 'url('backgroundimage')');
或者这个
$('#body-image').css("background-image", 'url(backgroundimage)');
答案 0 :(得分:7)
backgroundimage
是一个JavaScript变量。 JavaScript中的连接运算符是+,因此要将字符串与变量放在一起,您需要'some string ' + someVariable
。没有+,JavaScript就不知道如何处理你的变量(在你的第三个例子中,甚至不知道 是一个变量)。
答案 1 :(得分:2)
您需要使用变量backgroundimage
连接字符串。所以你用“+”就可以了。
这就是为什么这不起作用。
$('#body-image').css("background-image", 'url('backgroundimage')');
secont不起作用,因为没有名为'backgroundimage'的图像。
$('#body-image').css("background-image", 'url(backgroundimage)');
答案 2 :(得分:1)
因为你正在构建一个字符串。您错过了backgroundimage获取值的行:
var backgroundimage = "someimage.gif";
$('#body-image').css("background-image", 'url('+ backgroundimage +')');
变为:
$('#body-image').css("background-image", 'url(someimage.gif)');
答案 3 :(得分:0)
它连接字符串。 让我们说backgroundimage是'foo.jpg,然后是
'url('+backgroundimage+')' = 'url(foo.jpg)'
答案 4 :(得分:0)
在JavaScript中,字符串文字(即“我是一个字符串”)实际上被视为一个String对象(严格来说,它不是 - 请参阅MDC documentation - 但我们可以忽略它这个级别的差异)。以下两行是等效的:
var letters = "ABC", numbers = "123";
var letters = new String("ABC"), numbers = new String("123");
使用+运算符或String.concat方法连接字符串,其中任何一个以从左到右的顺序连接2个或多个字符串并返回结果。因此,为了获得“ABC123”,我们可以执行以下任何操作:
"ABC" + "123"
"ABC" + numbers
letters + "123"
letters + numbers
"ABC".concat("123")
"ABC".concat(numbers)
letters.concat("123")
letters.concat(numbers)
但不是:
letters"123"
"ABC"numbers
lettersnumbers
"lettersnumbers"
这些都与您在示例中尝试的内容完全相同。