3117

我在 Ruby 中有以下代码。我想将此代码转换为 JavaScript。JS中的等效代码是什么?

text = <<"HERE"
This
Is
A
Multiline
String
HERE
4

43 回答 43

4071

更新:

ECMAScript 6 (ES6) 引入了一种新的文字类型,即模板文字。它们有很多特性,变量插值等等,但对于这个问题最重要的是,它们可以是多行的。

模板文字由反引号分隔:

var html = `
  <div>
    <span>Some HTML here</span>
  </div>
`;

(注意:我不提倡在字符串中使用 HTML)

浏览器支持还可以,但您可以使用转译器来提高兼容性。


原始 ES5 答案:

Javascript 没有 here-document 语法。但是,您可以转义文字换行符,这很接近:

"foo \
bar"
于 2009-04-30T02:15:20.593 回答
1469

ES6 更新:

正如第一个答案所提到的,使用 ES6/Babel,您现在可以简单地使用反引号创建多行字符串:

const htmlString = `Say hello to 
multi-line
strings!`;

插值变量是一个流行的新功能,它带有反引号分隔的字符串:

const htmlString = `${user.name} liked your post about strings`;

这只是转译为串联:

user.name + ' liked your post about strings'

原始 ES5 答案:

Google 的 JavaScript 样式指南建议使用字符串连接而不是转义换行符:

不要这样做:

var myString = 'A rather long string of English text, an error message \
                actually that just keeps going and going -- an error \
                message to make the Energizer bunny blush (right through \
                those Schwarzenegger shades)! Where was I? Oh yes, \
                you\'ve got an error and all the extraneous whitespace is \
                just gravy.  Have a nice day.';

每行开头的空格不能在编译时安全地去除;斜杠后的空格会导致棘手的错误;虽然大多数脚本引擎都支持这一点,但它不是 ECMAScript 的一部分。

改为使用字符串连接:

var myString = 'A rather long string of English text, an error message ' +
               'actually that just keeps going and going -- an error ' +
               'message to make the Energizer bunny blush (right through ' +
               'those Schwarzenegger shades)! Where was I? Oh yes, ' +
               'you\'ve got an error and all the extraneous whitespace is ' +
               'just gravy.  Have a nice day.';
于 2011-06-06T02:30:45.620 回答
718

该模式text = <<"HERE" This Is A Multiline String HERE在 js 中不可用(我记得在我美好的 Perl 时代经常使用它)。

为了监督复杂或长的多行字符串,我有时会使用数组模式:

var myString = 
   ['<div id="someId">',
    'some content<br />',
    '<a href="#someRef">someRefTxt</a>',
    '</div>'
   ].join('\n');

或者匿名模式已经显示(转义换行符),这可能是您代码中的一个丑陋块:

    var myString = 
       '<div id="someId"> \
some content<br /> \
<a href="#someRef">someRefTxt</a> \
</div>';

这是另一个奇怪但有效的“技巧” 1

var myString = (function () {/*
   <div id="someId">
     some content<br />
     <a href="#someRef">someRefTxt</a>
    </div>        
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];

外部编辑:jsfiddle

ES20xx支持使用模板字符串跨越多行字符串:

let str = `This is a text
    with multiple lines.
    Escapes are interpreted,
    \n is a newline.`;
let str = String.raw`This is a text
    with multiple lines.
    Escapes are not interpreted,
    \n is not a newline.`;

1注意:缩小/混淆您的代码后,这将丢失

于 2009-04-30T07:22:29.950 回答
368

可以在纯 JavaScript 中使用多行字符串。

该方法基于函数的序列化,定义为依赖于实现。它在大多数浏览器中都可以工作(见下文),但不能保证它在将来仍然可以工作,所以不要依赖它。

使用以下功能:

function hereDoc(f) {
  return f.toString().
      replace(/^[^\/]+\/\*!?/, '').
      replace(/\*\/[^\/]+$/, '');
}

你可以有这样的文件:

var tennysonQuote = hereDoc(function() {/*!
  Theirs not to make reply,
  Theirs not to reason why,
  Theirs but to do and die
*/});

该方法已在以下浏览器中成功测试(未提及=未测试):

  • 即 4 - 10
  • Opera 9.50 - 12(不在 9- 中)
  • Safari 4 - 6(不在 3- 中)
  • 铬 1 - 45
  • Firefox 17 - 21(不在 16- 中
  • Rekonq 0.7.0 - 0.8.0
  • Konqueror 4.7.4 不支持

不过要小心你的缩小器。它倾向于删除评论。对于YUI 压缩器,以(如我使用的那个)开头的注释/*!将被保留。

我认为真正的解决方案是使用CoffeeScript

ES6 更新:您可以使用反引号而不是创建带有注释的函数并在注释上运行 toString。正则表达式需要更新为仅去除空格。您还可以使用字符串原型方法来执行此操作:

let foo = `
  bar loves cake
  baz loves beer
  beer loves people
`.removeIndentation()

有人应该写这个 .removeIndentation 字符串方法... ;)

于 2011-04-06T18:16:35.810 回答
216

你可以这样做...

var string = 'This is\n' +
'a multiline\n' + 
'string';
于 2009-04-30T02:13:49.317 回答
180

我想出了这种非常简单的多线绳索装配方法。由于将函数转换为字符串还会返回函数内的任何注释,因此您可以使用多行注释 /**/ 将注释用作字符串。你只需要剪掉末端,你就有了你的绳子。

var myString = function(){/*
    This is some
    awesome multi-lined
    string using a comment 
    inside a function 
    returned as a string.
    Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)

alert(myString)
于 2013-03-21T21:05:15.407 回答
93

我很惊讶我没有看到这个,因为它在我测试过的任何地方都可以工作,并且对于例如模板非常有用:

<script type="bogus" id="multi">
    My
    multiline
    string
</script>
<script>
    alert($('#multi').html());
</script>

有人知道有 HTML 但它不起作用的环境吗?

于 2012-01-03T19:51:51.277 回答
58

我通过输出一个 div,将其隐藏,并在需要时通过 jQuery 调用 div id 来解决这个问题。

例如

<div id="UniqueID" style="display:none;">
     Strings
     On
     Multiple
     Lines
     Here
</div>

然后当我需要获取字符串时,我只需使用以下 jQuery:

$('#UniqueID').html();

它在多行上返回我的文本。如果我打电话

alert($('#UniqueID').html());

我得到:

在此处输入图像描述

于 2012-08-17T14:25:53.730 回答
33

有多种方法可以实现这一目标

1.斜线连接

  var MultiLine=  '1\
    2\
    3\
    4\
    5\
    6\
    7\
    8\
    9';

2. 正则连接

var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';

3. Array Join 串联

var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');

性能方面,斜线连接(第一个)是最快的。

有关性能的更多详细信息,请参阅此测试用例

更新:

使用ES2015,我们可以利用其模板字符串功能。有了它,我们只需要使用反引号来创建多行字符串

例子:

 `<h1>{{title}}</h1>
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div><label>name: </label>{{hero.name}}</div>
  `
于 2014-05-26T09:34:41.043 回答
31

使用脚本标签:

  • <script>...</script>包含多行文本的块添加到head标签中;
  • 按原样获取多行文本...(注意文本编码:UTF-8、ASCII)

    <script>
    
        // pure javascript
        var text = document.getElementById("mySoapMessage").innerHTML ;
    
        // using JQuery's document ready for safety
        $(document).ready(function() {
    
            var text = $("#mySoapMessage").html(); 
    
        });
    
    </script>
    
    <script id="mySoapMessage" type="text/plain">
    
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="...">
           <soapenv:Header/>
           <soapenv:Body>
              <typ:getConvocadosElement>
                 ...
              </typ:getConvocadosElement>
           </soapenv:Body>
        </soapenv:Envelope>
    
        <!-- this comment will be present on your string -->
        //uh-oh, javascript comments...  SOAP request will fail 
    
    
    </script>
    
于 2012-08-23T18:30:45.393 回答
25

我喜欢这种语法和缩进:

string = 'my long string...\n'
       + 'continue here\n'
       + 'and here.';

(但实际上不能被视为多行字符串)

于 2011-12-13T20:09:10.637 回答
19

Downvoters:此代码仅供参考。

这已经在 Mac 上的 Fx 19 和 Chrome 24 中进行了测试

演示

var new_comment; /*<<<EOF 
    <li class="photobooth-comment">
       <span class="username">
          <a href="#">You</a>:
       </span>
       <span class="comment-text">
          $text
       </span> 
       @<span class="comment-time">
          2d
       </span> ago
    </li>
EOF*/
// note the script tag here is hardcoded as the FIRST tag 
new_comment=document.currentScript.innerHTML.split("EOF")[1]; 
document.querySelector("ul").innerHTML=new_comment.replace('$text','This is a dynamically created text');
<ul></ul>

于 2013-02-17T09:56:46.330 回答
18

有这个库使它很漂亮:

https://github.com/sindresorhus/multiline

var str = '' +
'<!doctype html>' +
'<html>' +
'   <body>' +
'       <h1>❤ unicorns</h1>' +
'   </body>' +
'</html>' +
'';

var str = multiline(function(){/*
<!doctype html>
<html>
    <body>
        <h1>❤ unicorns</h1>
    </body>
</html>
*/});
于 2014-04-25T11:34:57.497 回答
12

javascript中的等价物是:

var text = `
This
Is
A
Multiline
String
`;

这是规范请参阅本页底部的浏览器支持。这里也有一些例子

于 2015-11-04T13:59:33.790 回答
12

在这里找到了很多过度设计的答案。我认为最好的两个答案是:

1:

 let str = `Multiline string.
            foo.
            bar.`

最终记录:

Multiline string.
           foo.
           bar.  

2:

let str = `Multiline string.
foo.
bar.`

这会正确记录它,但如果 str 嵌套在函数/对象等内部,它在脚本文件中会很丑陋......:

Multiline string.
foo.
bar.

我对正确记录 str 的正则表达式的非常简单的回答:

let str = `Multiline string.
           foo.
           bar.`.replace(/\n +/g, '\n');

请注意,这不是完美的解决方案,但如果您确定在新行 (\n) 之后至少会出现一个空格(+ 表示至少出现一次),它就会起作用。它也适用于 *(零个或多个)。

您可以更明确地使用 {n,} ,这意味着至少出现 n 次。

于 2021-11-05T17:46:33.937 回答
11

这适用于 IE、Safari、Chrome 和 Firefox:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<div class="crazy_idea" thorn_in_my_side='<table  border="0">
                        <tr>
                            <td ><span class="mlayouttablecellsdynamic">PACKAGE price $65.00</span></td>
                        </tr>
                    </table>'></div>
<script type="text/javascript">
    alert($(".crazy_idea").attr("thorn_in_my_side"));
</script>
于 2010-11-23T16:46:29.397 回答
11

总而言之,我尝试了用户 javascript 编程(Opera 11.01)中列出的 2 种方法:

所以我推荐Opera用户JS用户的工作方法。与作者所说的不同:

它不适用于 Firefox 或 Opera;仅在 IE、chrome 和 safari 上。

它确实在 Opera 11 中工作。至少在用户 JS 脚本中。太糟糕了,我不能评论个别答案或支持答案,我会立即这样做。如果可能,请有更高权限的人为我做。

于 2011-05-20T13:10:33.553 回答
10

我对https://stackoverflow.com/a/15558082/80404的扩展。它期望以/*! any multiline comment */符号 ! 用于防止通过缩小删除(至少对于 YUI 压缩器)

Function.prototype.extractComment = function() {
    var startComment = "/*!";
    var endComment = "*/";
    var str = this.toString();

    var start = str.indexOf(startComment);
    var end = str.lastIndexOf(endComment);

    return str.slice(start + startComment.length, -(str.length - end));
};

例子:

var tmpl = function() { /*!
 <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
    </ul>
 </div>
*/}.extractComment();
于 2013-12-11T17:30:58.503 回答
9

2015年更新:现在已经六年了:大多数人使用模块加载器,主要模块系统都有加载模板的方法。它不是内联的,但最常见的多行字符串类型是模板,而且模板通常应该远离 JS

require.js: '需要文本'。

使用require.js 'text' 插件,在 template.html 中有一个多行模板

var template = require('text!template.html')

NPM/browserify:“brfs”模块

Browserify使用 'brfs' 模块来加载文本文件。这实际上会将您的模板构建到捆绑的 HTML 中。

var fs = require("fs");
var template = fs.readFileSync(template.html', 'utf8');

简单的。

于 2014-02-10T11:13:38.740 回答
9

如果您愿意使用转义的换行符,它们可以很好地使用。 它看起来像一个带有页面边框的文档

在此处输入图像描述

于 2015-04-28T18:31:00.240 回答
9

精确的

Ruby生成"This\nIs\nA\nMultiline\nString\n"- 下面的 JS 生成完全相同的字符串

text = `This
Is
A
Multiline
String
`

// TEST
console.log(JSON.stringify(text));
console.log(text);

这是对Lonnie 最佳答案的改进,因为他的答案中的换行符与 ruby​​ 输出中的位置不完全相同

于 2020-06-10T20:45:55.820 回答
8

ES6 的做法是使用模板文字:

const str = `This 

is 

a

multiline text`; 

console.log(str);

更多参考这里

于 2018-07-13T17:25:51.037 回答
7

您可以使用TypeScript(JavaScript SuperSet),它支持多行字符串,并且可以在没有开销的情况下转译回纯 JavaScript:

var templates = {
    myString: `this is
a multiline
string` 
}

alert(templates.myString);

如果您想使用纯 JavaScript 完成相同的操作:

var templates = 
{
 myString: function(){/*
    This is some
    awesome multi-lined
    string using a comment 
    inside a function 
    returned as a string.
    Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)

}
alert(templates.myString)

注意 iPad/Safari 不支持'functionName.toString()'

如果您有很多遗留代码,您还可以在 TypeScript 中使用纯 JavaScript 变体(用于清理目的):

interface externTemplates
{
    myString:string;
}

declare var templates:externTemplates;

alert(templates.myString)

并且您可以使用纯 JavaScript 变体中的多行字符串对象,将模板放入另一个文件中(您可以将其合并到包中)。

您可以在http://www.typescriptlang.org/Playground尝试 TypeScript

于 2015-09-21T15:23:33.330 回答
7

在 Javascrips 中创建多行字符串的最简单方法是使用反引号 ( `` )。这允许您创建多行字符串,您可以在其中插入带有${variableName}.

例子:

let name = 'Willem'; 
let age = 26;

let multilineString = `
my name is: ${name}

my age is: ${age}
`;

console.log(multilineString);

兼容性:

  • 它是在ES6//中介绍的es2015
  • 它现在得到所有主要浏览器供应商的原生支持(除了 Internet Explorer)

在此处检查 Mozilla 文档中的确切兼容性

于 2018-09-09T11:00:17.760 回答
6

ES6 允许您使用反引号在多行上指定一个字符串。它被称为模板文字。像这样:

var multilineString = `One line of text
    second line of text
    third line of text
    fourth line of text`;

在 NodeJS 中可以使用反引号,Chrome、Firefox、Edge、Safari 和 Opera 都支持它。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

于 2016-03-28T18:43:26.367 回答
4

另请注意,当在每行末尾使用正反斜杠将字符串扩展到多行时,正反斜杠之后的任何额外字符(主要是空格、制表符和错误添加的注释)都会导致意外的字符错误,我花了一个小时才找到出去

var string = "line1\  // comment, space or tabs here raise error
line2";
于 2016-07-13T19:25:31.550 回答
4

出于对互联网的热爱,请使用字符串连接并选择不使用 ES6 解决方案。ES6 并非全面支持,就像 CSS3 和某些浏览器在适应 CSS3 运动方面很慢。使用普通的 JavaScript,您的最终用户会感谢您。

例子:

var str = "This world is neither flat nor round. "+ "Once was lost will be found";

于 2017-10-11T23:28:47.363 回答
3

我的字符串连接的基于数组的连接版本:

var c = []; //c stands for content
c.push("<div id='thisDiv' style='left:10px'></div>");
c.push("<div onclick='showDo(\'something\');'></div>");
$(body).append(c.join('\n'));

这对我来说效果很好,尤其是当我经常将值插入以这种方式构造的 html 时。但它有很多限制。缩进会很好。不必处理嵌套引号会非常好,只是它的笨重困扰着我。

添加到数组中的 .push() 是否会占用大量时间?请参阅此相关答案:

JavaScript 开发人员不使用 Array.push() 是否有原因?

在查看了这些(相反的)测试运行之后,看起来 .push() 对于不太可能增长超过 100 个项目的字符串数组来说很好 - 我会避免它,而支持更大数组的索引添加。

于 2013-10-14T00:58:19.003 回答
3

你可以+=用来连接你的字符串,似乎没有人回答这个问题,这将是可读的,也很整洁......像这样的东西

var hello = 'hello' +
            'world' +
            'blah';

也可以写成

var hello = 'hello';
    hello += ' world';
    hello += ' blah';

console.log(hello);
于 2014-01-18T13:18:54.217 回答
3

带变量的多行字符串

var x = 1
string = string + `<label class="container">
                       <p>${x}</p>
                   </label>`;
于 2022-01-20T12:19:16.720 回答
2

您必须使用连接运算符“+”。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p id="demo"></p>
    <script>
        var str = "This "
                + "\n<br>is "
                + "\n<br>multiline "
                + "\n<br>string.";
        document.getElementById("demo").innerHTML = str;
     </script>
</body>
</html>

通过使用\n您的源代码将如下所示 -

这
 <br>是
 <br>多行
 <br>字符串。

通过使用<br>您的浏览器输出将如下所示 -

这
是
多行
细绳。
于 2017-08-13T22:57:20.987 回答
2

您可以使用标记模板来确保获得所需的输出。

例如:

// Merging multiple whitespaces and trimming the output

const t = (strings) => { return strings.map((s) => s.replace(/\s+/g, ' ')).join("").trim() }
console.log(t`
  This
  Is
  A
  Multiline
  String
`);
// Output: 'This Is A Multiline String'

// Similar but keeping whitespaces:

const tW = (strings) => { return strings.map((s) => s.replace(/\s+/g, '\n')).join("").trim() }
console.log(tW`
  This
  Is
  A
  Multiline
  String
`);
// Output: 'This\nIs\nA\nMultiline\nString'
于 2020-07-08T21:17:01.527 回答
1

我认为这种解决方法应该适用于 IE、Chrome、Firefox、Safari、Opera -

使用 jQuery

<xmp id="unique_id" style="display:none;">
  Some plain text
  Both type of quotes :  " ' " And  ' " '
  JS Code : alert("Hello World");
  HTML Code : <div class="some_class"></div>
</xmp>
<script>
   alert($('#unique_id').html());
</script>

使用纯 Javascript:

<xmp id="unique_id" style="display:none;">
  Some plain text
  Both type of quotes :  " ' " And  ' " '
  JS Code : alert("Hello World");
  HTML Code : <div class="some_class"></div>
</xmp>
<script>
   alert(document.getElementById('unique_id').innerHTML);
</script>

干杯!!

于 2013-01-28T12:20:46.427 回答
1

在 JavaScript 中打印多行字符串的一种简单方法是使用由反引号 (` `) 表示的模板文字(模板字符串)。您还可以在模板字符串中使用变量(` name is ${value}`)

你也可以

const value = `multiline`
const text = `This is a
${value}
string in js`;
console.log(text);

于 2022-03-02T17:26:01.720 回答
0

刚刚尝试了匿名回答,发现这里有一个小技巧,如果反斜杠后面有空格,它就不起作用\
所以下面的解决方案不起作用 -

var x = { test:'<?xml version="1.0"?>\ <-- One space here
            <?mso-application progid="Excel.Sheet"?>' 
};

但是当空间被删除时,它会起作用 -

var x = { test:'<?xml version="1.0"?>\<-- No space here now
          <?mso-application progid="Excel.Sheet"?>' 
};

alert(x.test);​

希望能帮助到你 !!

于 2012-11-23T13:10:00.497 回答
0

这是一种相当经济的方法,至少就源代码而言:

function s() {
    var args = [],index;
    for (index = 0; index< arguments.length; index++) {
        args.push (arguments [index]);
    }
    return args.join ("\n");
}
console.log (s (
    "This is the first line",
    "and this is the second",
    "finally a third"
));

function s() {return arguments.join ("\n")} 

如果“arguments”属性是一个合适的数组,当然会更好。

当您想要控制很长字符串中的换行符时,第二个版本可能会使用 "" 来进行连接。

于 2013-03-07T09:37:06.913 回答
0

我这样编程:

sys = {
    layout: null,
    makeLayout: function (obCLS) {
        this.layout = $('<div />').addClass('editor').appendTo($(obCLS)).append(

            /* Cargador */
            /* @this.layout.find('> div:nth-of-child(1)'); */
            '<div>' +
            '   <p>Seleccione la imagen que desea procesar.</p>' +
            '   <input type="button" value="Seleccionar" class="btn btn-xlarge btn-success" />' +
            '   <span></span>' +
            '</div>' +

            /* Cargador - Progreso */
            /* @this.layout.find('> div:nth-of-child(2)'); */
            '<div>' +
            '   <div>' +
            '       <div></div>' +
            '       <div>' +
            '           <div></div>' +
            '       </div>' +
            '   </div>' +
            '</div>' +

            /* Editor */
            /* @this.layout.find('> div:nth-of-child(3)');
             * @sidebar = this.layout.find('> div:nth-of-child(3) > div > div > div:nth-of-type(1)');
             * @body    = this.layout.find('> div:nth-of-child(3) > div > div > div:nth-of-type(2) > div'); */
            '<div>' +
            '   <div>' +
            '       <div>' +
            '           <div></div>' +
            '           <div>' +
            '               <div></div>' +
            '           </div>' +
            '       </div>' +
            '   </div>' +
            '</div>'
        );
    }
}

sys.makeLayout('#div');
于 2013-08-02T16:04:50.710 回答
0

我想我发现了另一种在每一行都没有任何侵入性语法的内联方式。使用 Javascript 将函数转换为字符串并使用语法创建多行注释的能力,/**/然后删除“function() {/*\n”和“\n*/}”。

var multiline = function(string) { return string.toString().replace(/(^[^\n]*\n)|(\n\*\/\})/g, ""); };

console.log(multiline(function() {/*
Hello world!
I'm a multiline string!

Tada!
*/}));

我能看到的唯一缺陷是语法高亮。

编辑:如果我向下滚动一点,我会看到这个答案做同样的事情:https ://stackoverflow.com/a/5571069/916553

于 2013-08-27T17:05:18.160 回答
0

如果您碰巧只在 Node 中运行,则可以使用 fs 模块从文件中读取多行字符串:

var diagram;
var fs = require('fs');
fs.readFile( __dirname + '/diagram.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  diagram = data.toString();
});
于 2014-09-09T00:02:29.070 回答
0

规则是:当在字符串中时,在需要换行的地方使用 \n;您不必在 \n 之前或之后放置空格,JavaScript 的解释器足够聪明,可以知道不可打印字符表示的长度。

于 2019-07-24T22:01:45.103 回答
0

JavaScript 从来没有真正好的方法来处理多行字符串,直到 2015 年引入 ES6 以及模板文字。

模板文字是由反引号 (``) 分隔的字符串,而不是普通的单 ('')/双引号 ("")e 引号分隔符。

于 2021-10-23T11:28:45.757 回答
-3

我找到了一个更优雅的解决方案,可能有点与主题无关,因为它使用 PHP,但我相信它对你的一些人来说会很有用和可爱*...

javascript 代码应保留在脚本标签内

var html=<?php echo json_encode("

        <div class=container>
            <div class=area1>
                xxx
            </div>
            <div class=area2>
                ".$someVar."
            </div>
        </div>

"); ?>

在您的输出 html中,您会看到类似

var html="\r\n\r\n\t\t\t<div class=container>\r\n\t\t\t\t<div class=area1>\r\n\t\t\t\t\txxx\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=area2>\r\n\t\t\t\t\t44\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\r\n\t\t";  

 


等等,它为您提供文件中的代码可读性。

pD:此示例使用 json_encode() PHP 函数,但肯定有 ASP、Ruby 和 JSP 语言的等效函数。

pD:然而,这个解决方案也有他的局限性,其中之一是你不能在封装的代码中使用 javascript 变量。

于 2013-11-14T05:46:32.417 回答
-13

它不是非常优雅,但对我来说足够干净:

var myString = "First line" + "\n";
var myString = myString + "Second line" + "\n";
var myString = myString + "Third line" + "\n";
于 2013-02-19T01:46:50.773 回答