我是Javascript的新手,这是我第一次在参加JQuery课程时遇到过这种类型的连接。我的问题是关于+符号以及为什么需要在“>”之前使用所有引号关闭HTML标记。换句话说,代码的+“'>”部分。为什么不能在没有加号的情况下结束引号并关闭标记?有人可以一步一步地打破这种局面吗?我在脚本中留下了一条评论,我很困惑。有2个实例。感谢。
<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() { //This is the part
$(this).html("<a name='bookmark" + cAnchorCount + "'></a>" + $(this).html());
oList.append($("<li><a href='#bookmark" + cAnchorCount++ + "'> " + $(this).text() + "</a></li>"));
});
$("#" + sBookMarkNode).append(oList);
}
</script>
答案 0 :(得分:4)
你已经结束了字符串文字,回到这里:
"<li><a href='#bookmark"
// ^ here
现在,您将表达式连接到它之前的字符串,并将该连接的结果与另一个字符串文字连接起来,并使用+
运算符进行连接。
如果我们用表示表达式(它们是)的占位符替换文字,并添加括号,它可能会变得更清晰:
oList.append($(A + (cAnchorCount++) + B + ($(this).text()) + C));
请注意,这里的HTML并不特别;你在这里的字符串就像任何其他字符串一样。他们碰巧代表HTML。 (顺便提一下,我建议在jQuery之前学习W3C DOM;它会使这种分离更加清晰。)
答案 1 :(得分:0)
该脚本通过将字符串连接在一起在Javascript中构建HTML元素。你可以这样想:
tag_opening + anchor_count + tag_closing
+
是必要的,因为它在一起添加字符串。没有它,你只需要跟随另一个字符串,这将导致语法错误。
答案 2 :(得分:0)
这里的加号用于连接。你真正在做的是添加一个你写的字符串(一个名字='书签)加一个变量(cAnchorCount),加上另一个字符串('&gt;)来制作一个长字符串。没有加号,语法没有意义。
答案 3 :(得分:0)
您的示例不清楚,但您要将变量和HTML字符串组合在一起:
"<a href='#bookmark" + cAnchorCount++ + "'> "
将评估为:
<a href='#bookmark1'>
您列出的代码使用外部双引号("
)来包装字符串和内部单引号('
)以包装属性值。 JavaScript字符串中没有插值,只有字符串连接。
答案 4 :(得分:0)
他们正在尝试格式化字符串,以便在代码编译后,它将是可读的HTML。
例如:
oList.append($("<li><a href='#bookmark" + cAnchorCount++ + "'> " + $(this).text() + "</a></li>"));
正试图最终获得
<li><a href='#bookmark3'>TEXT</a></li>
添加文字后,您需要'>
从<a href='
正确关闭代码。
答案 5 :(得分:0)
在这种情况下,它与HTML或被连接的字符串的内容无关,只是JavaScript使用+
运算符来连接字符串。我想每种语言都使用一些运算符来执行此操作。例如:
var result = 'first string' + 'second string';
这会创建连接字符串:
'first stringsecond string'
现在,如果其中一个字符串碰巧是一个变量,那么同样的事情发生了:
var someVariable = 'second string';
var result = 'first string' + someVariable;
这仍然会产生相同的连接字符串:
'first stringsecond string'
问题中的所有代码都是在这些情况下进行的。将一个字符串连接到另一个字符串。例如:
$("div:not([id=header]) " + strWhichTag)
变量strWhichTag
包含一些字符串值,可能是HTML标记的名称,以其名称和用法来判断。因此,如果它包含'div'
之类的内容,则结果为:
$("div:not([id=header]) div")
然后,jQuery将这个整体结果字符串作为选择器进行评估,以识别要操作的一组HTML元素。但字符串连接并不重要,它可以很容易地产生这个:
$("div:not([id=header]) some nonsense")
如果strWhichTag
变量包含值'some nonsense'
。
答案 6 :(得分:0)
这被称为连接,#是字符串的ID,而sBookMarkNode是变量。然后,当页面加载时,它会在#+ sBookMarkNode之后追加(创建),显然创建变量sBookMarkNode,否则就是全局变量,因为我在你的代码片段中看不到它。