kma*_*289 0 html javascript variables jquery string-concatenation
我是javascript的新手,并希望有人能够向我解释为什么某些引用放在它们所在的位置.我理解在下面的代码中,我留下了评论,它是3个字符串被合并为一个但是我不明白为什么引号放在它们所在的位置.我确定答案是显而易见的,但我无法绕过它.正如我所说,3个部分是tag_opening + anchor_count + tag_closing.只是混淆了单个''报价以及为什么它们就在哪里.先感谢您.
<script type="text/javascript">
$("document").ready(function() {
buildBookmarks('h3', 'header');
});
function buildBookmarks(strWhichTag, sBookMarkNode) {
var cAnchorCount = 0;
var oList = $("<ul id='bookmarksList'>");
$("div:not([id=header])" + strWhichTag).each(function() {
//I'm confused on the quotation placement and why it cannot look like this:
//"<li><a href='#bookmark" + cAnchorCount++' + ">" -OR-
//"<a name='bookmark" + cAnchorCount + >' + "</a>"
$(this).html("<a name='bookmark" + cAnchorCount + "'></a>" + $(this).html());
oList.append($("<li><a href='#bookmark" + cAnchorCount++ + "'>" + $(this).text() + "</a></li>"));
});
$("#" + sBookMarkNode).append(oList);
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是因为要创建有效标记,需要将属性值包装起来,无论是单引号还是双引号.幸运的是,只要您在给定字符串中保持一致(尽管至少尝试在所有代码中使用相同的方法),使用哪种类型无关紧要.
举个例子,这一行:
$("<li><a href='#bookmark" + cAnchorCount++ + "'>" + $(this).text() + "</a></li>")
Run Code Online (Sandbox Code Playgroud)
会生成这个标记:
<li><a href='#bookmarkSomeAnchorCount'>Some Text</a></li>
Run Code Online (Sandbox Code Playgroud)
如果你颠倒引号的使用,情况也是如此.这条新线:
$('<li><a href="#bookmark' + cAnchorCount++ + '">' + $(this).text() + '</a></li>')
Run Code Online (Sandbox Code Playgroud)
会生成这个标记:
<li><a href="#bookmarkSomeAnchorCount">Some Text</a></li>
Run Code Online (Sandbox Code Playgroud)
本质上,一个引用类型用于描述字符串文字,而另一个是要包含在结果字符串中的字符,因为生成的标记要求它有效.