Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用html内容设置多行字符串样式的正确方法?_Javascript_Jquery_Html_Multiline - Fatal编程技术网

在Javascript中使用html内容设置多行字符串样式的正确方法?

在Javascript中使用html内容设置多行字符串样式的正确方法?,javascript,jquery,html,multiline,Javascript,Jquery,Html,Multiline,我正在使用JavaScript代码,需要创建一个菜单结构。我使用一个append语句并为每个主题添加代码,其中包含一系列子主题,以便脚本将整个内容呈现为菜单。如果我不将字符串中的标记隔开,但是为了调试和编辑的目的,我希望它看起来更干净,那么这样做很好 sidebarMainMenu.append('\ <li id="par-1-menu"><a href="topic1.html">MainTopic-1</a>\ <ul cl

我正在使用JavaScript代码,需要创建一个菜单结构。我使用一个append语句并为每个主题添加代码,其中包含一系列子主题,以便脚本将整个内容呈现为菜单。如果我不将字符串中的标记隔开,但是为了调试和编辑的目的,我希望它看起来更干净,那么这样做很好

sidebarMainMenu.append('\
    <li id="par-1-menu"><a href="topic1.html">MainTopic-1</a>\
        <ul class="sub-menu">\
            <li id="sub-par-1-1-menu"><a href="topic1.html#sub-par-1-1">#1: SubTopic-1</a></li>\
            <li id="sub-par-1-2-menu"><a href="topic1.html#sub-par-1-2">#2: SubTopic-2</a></li>\
            <li id="sub-par-1-3-menu"><a href="topic1.html#sub-par-1-3">#3: SubTopic-3</a></li>\
            <li id="sub-par-1-4-menu"><a href="topic1.html#sub-par-1-4">#4: SubTopic-4</a></li>\
            <li id="sub-par-1-5-menu"><a href="topic1.html#sub-par-1-5">#5: SubTopic-5</a></li>\
            <li id="sub-par-1-6-menu"><a href="topic1.html#sub-par-1-6">#6: SubTopic-6</a></li>\
        </ul>\
    </li>\
');
sidebarMainMenu.append('\
  • \
      \
    • \
    • \
    • \
    • \
    • \
    • \
    \
  • \ ');
    这给了我一个错误:未捕获的语法错误:意外标记非法


    不确定我错过了什么,但我肯定这是个小错误。不管怎样,这是处理JS函数中多行字符串参数的正确方法吗?提前感谢。

    这不是在JavaScript中处理多行字符串的首选方法。根据,有两种方法,要么使用标准字符串,要么(在支持它们的浏览器中)使用较新的模板文本语法

    首先,以下是MDN示例,介绍如何将多行字符串文字与普通JavaScript字符串一起使用:

    使用普通字符串时,必须使用以下语法才能获得多行字符串:

    console.log("string text line 1\n"+
    "string text line 2");
    // "string text line 1
    // string text line 2"
    
    本质上,您只是将每一行作为字符串写入,并使用
    +
    运算符将它们连接起来。但是,在ECMAScript 2015中,有一种新的方法可以做到这一点(注意倒勾而不是引号):

    要获得与多行字符串相同的效果,现在可以编写:

    console.log(`string text line 1
    string text line 2`);
    // "string text line 1
    // string text line 2"
    

    请注意,模板文字仅在某些较新的浏览器中受支持,您可以查看链接文章底部的表格以了解有关支持的详细信息。

    将该字符串复制/粘贴到控制台不会出错

    你的问题更多的是一种观点,而不是对/错。有人可能会说,永远不应该将html字符串放在javascript中,但它们是纯粹的,在现实世界中不起作用

    另一个可能会争辩说,应该分解字符串并执行循环

    还有人可能会争辩说,您应该将标记放在页面的某个地方,并通过javascript引用它,将其放在您想要的地方


    另一个可能会争辩说,你应该使用一种模板语言,并用javascript中的数据填充模板。

    这是第一行,在打开报价后,你有一个反斜杠,没有内容,如果你将第一个li标记移到那里,它会起作用。

    只要确保你在反斜杠后没有任何空格。

    顺便说一句,我只是在console&codepen中尝试了你的代码,没有出现任何错误,你确定错误是针对这段代码吗?可能是重复的,我将创建一个演示并发布答案,这是一个利用回勾的小提琴。是我干的。我甚至尝试创建一个JSON对象,并使用对象中字符串的每一行。两者都不起作用。我想我在上面的代码中遇到了一个格式问题。我修改了我的答案,说这不是处理多行字符串的首选方法,因为正如我刚刚学到的,显然你可以这样做,并转义所有换行符或回车符。然而,正如你所看到的,这是一个混乱,不是我推荐的。如果您想使用这种格式,正如其他人所说,请确保任何反斜杠后都没有空格。JSFIDLE中所示的代码给了我一个“未捕获的语法错误:输入的意外结束”错误。@DarthCoder,您运行的浏览器不支持模板文字吗?我并没有创造那个小提琴,但它在谷歌Chrome上对我来说很好用。