为什么连接运算符不起作用?

时间:2012-12-26 14:01:22

标签: javascript jquery

这是测试代码:

var current_page= 0;
$('#background_music').append('<img id="bm'+current_page+'" src="success.png"   width="68px" height= "68px"/>');
$("#"+ "bm'+current_page+'").offset({top: 171, left: 41});

在此示例中,它不起作用,因为图像不会给出预期的偏移量。 这有什么问题:

"bm'+current_page+'"

但是,如果我将其更改为

$("#"+ "bm"+current_page).offset({top: 171, left: 41});

有效。

  1. 有什么区别?
  2. 代码" bm'+current_page+' "不会生成字符串:"bm0"
  3. 更新: 1.有什么区别?我只是想不通这个 +变量+ 。在我过去的问题中,我发布了类似的问题。但是,毕竟我没想出来......

4 个答案:

答案 0 :(得分:2)

应该是

$("#bm" + current_page)

而不是

$("#"+ "bm'+current_page+'")

以下只是一个字符串:

"bm'+current_page+'"

这里的字符串分隔符"(双引号),所以嵌套的单引号(')这里只是字符。字符串以最后一个"结束。

然而,在

'<img id="bm' + current_page + '" src="success.png" width="68px" height="68px"/>'

字符串分隔符是'(单引号),这意味着嵌套的双引号(")仅仅是以两个字符串串联结束的字符。

答案 1 :(得分:1)

@Stallman这可以帮助您了解引用的工作原理http://www.quirksmode.org/js/strings.html

答案 2 :(得分:0)

这条线路很不稳定:

$("#"+ "bm'+current_page+'").offset({top: 171, left: 41});

尝试以下方法,我们正在修复混合报价。

$('#bm'+current_page).offset({top: 171, left: 41});

答案 3 :(得分:0)

$("#"+ "bm'+current_page+'").offset({top: 171, left: 41});

我认为问题在于这一行。我认为应该是:

$("#bm" + current_page).offset({top: 171, left: 41});