有人可以帮我理解这个例子中引号的位置吗?

时间:2014-05-12 21:51:28

标签: javascript jquery html variables 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>

2 个答案:

答案 0 :(得分:6)

这是因为要创建有效的标记,需要将属性值包装起来,无论是单引号还是双引号。幸运的是,只要您在给定字符串中保持一致(尽管至少尝试在所有代码中使用相同的方法),使用哪种类型并不重要。

例如,这一行:

$("<li><a href='#bookmark" + cAnchorCount++ + "'>" + $(this).text() + "</a></li>")

会生成此标记:

<li><a href='#bookmarkSomeAnchorCount'>Some Text</a></li>

如果你颠倒报价的使用,情况也是如此。这个新行:

$('<li><a href="#bookmark' + cAnchorCount++ + '">' + $(this).text() + '</a></li>')

会生成此标记:

<li><a href="#bookmarkSomeAnchorCount">Some Text</a></li>

本质上,一个引用类型用于描述字符串文字,而另一个是要包含在结果字符串中的字符,因为生成的标记要求它有效。

答案 1 :(得分:0)

答案很简单。 &#34;和&#39;在JavaScript中是完全相同的,你可以有一个字符串与其中一个,如果它引用另一个。

通常HTML属性使用&#34;。所以要有一个带有很多&#34;的模板HMTL字符串,它更容易引用JavaScript字符串&#39;。

出于这个原因,我看到JS项目使用&#39;独自一人。