【问题标题】:Quotes for values of html attributes [closed]html属性值的引用[关闭]
【发布时间】:2014-06-28 04:59:09
【问题描述】:
$(document).ready(function () {
    for (var i = 0; i < 3 ; i++) {
        $("body").append("<p id=\"element"+i+"\">Hello world, I'm Element " + i + ".<p>");
    }
});

看第三行,匹配的引号对是什么?我假设 escape d 引号是一个。另外,为什么 +i+ 用引号括起来?转义引号不应该足够吗?编辑:我遗漏了一些代码。对不起!

【问题讨论】:

  • 您希望我们在这里告诉您什么?匹配的引号是语法高亮显示的那些。 +i+ 不是字符串的一部分,它周围的非转义引号终止第一个字符串并在 +i+ 之后开始另一个字符串。
  • 非常感谢。几天前我开始使用 jquery/js,我正在为正则表达式 + 引号如何工作而苦苦挣扎。你的评论很清楚。

标签: jquery html regex


【解决方案1】:

错觉

为什么 +i+ 用引号括起来?

事实并非如此。 + 是连接运算符,具有在前后字符串之间插入 i 的连续值的效果,产生如下内容:

  • &lt;p id="element1"&gt;Hello...
  • &lt;p id="element2"&gt;Hello...
  • &lt;p id="element3"&gt;Hello...

另请注意:

  1. +i+ 之前的" 引号不属于+i+。它关闭用"&lt;p id 打开的字符串
  2. \" 不是属于代码的引号。相反,它属于字符串,转义 \ 是必要的,因此它不会与右引号或左引号混淆。

【讨论】:

  • 当你有正确的语法高亮时,我不会称它为“可选的错觉”。
  • @FabrícioMatté 是的,你说得对。 :)
  • 这为我提供了更清晰的答案。我希望我能接受两个答案:) 谢谢。
【解决方案2】:

转义的引号在您正在创建的 HTML 字符串中相互匹配。

引号不是“包围”+i+。它们被用来结束以

开头的字符串
"<p id=\"element"

并开始下一个字符串:

"\">Hello world, ..."

这是在这两个字符串之间连接i。因此,如果i 包含0,则生成的 HTML 将是

<p id="element0">Hello world, I'm element 0</p>

转义引号允许将引号放入字符串中,但您仍然必须从字符串中取出 以展开变量。

Javascript 不像 PHP,它不会在字符串中扩展变量(因为没有像 $ 这样的特殊前缀来告诉变量从哪里开始)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2015-01-04
    • 2013-07-25
    • 2019-10-29
    相关资源
    最近更新 更多