-1

这段代码给出了错误:

var test = '1
2
3
4';

如果我想用 javascript 很好地构造代码怎么办,如下所示:

var return = '
<div>
   content
</div>
';

我怎么做?

4

6 回答 6

2

不可能像您描述的那样跨越行。

如果您使用+运算符并关闭您的字符串,您可以执行以下操作:

var retVal = '<div>' +
                'content' +
             '</div>';
于 2013-08-14T18:18:43.150 回答
1

如果你想编写多行 JavaScript,你可以使用\,或者如果你想换行,你可以使用\n.

所以对于多行是这样的:

var returnVal = '<div> \
                  content \
              </div>';

或者如果你想在字符串的输出中换行:

var reutrnVal = '<div> \n   content\n </div>'

或者您可以使用“+”连接:

var returnVal = '<div>' + 
'   content' + 
'</div>';
于 2013-08-14T18:21:29.467 回答
1

您的代码引发错误的原因是因为 Javascript 使用自动分号插入

如果你想在多行中构造一个大字符串,你最好做这样的事情 - :

var returnValue = '<div>' + 
                  'content' + 
                  '</div>';
于 2013-08-14T18:18:56.590 回答
0

JavaScript 不允许字符串中的文字换行符。(看起来那是错误的;例如,请参见stackErr 的答案。)有两种半合理的方法:使用+运算符(正如其他人所建议的那样),或者将您的行放入数组中,然后调用join('\n')数组:

var return = [
  '<div>',
  '  content',
  '</div>'
].join('\n');

后者并不是很有效,但在大多数情况下这可能并不重要。

如果您发现您经常这样做(以编程方式组装许多小的 HTML 片段),那么值得研究一个模板库,例如Mustache

于 2013-08-14T18:21:27.170 回答
0

如果您以 a 结束一行\,那么您的字符串可以在下一行继续。

var return = '\
<div>\
   content\
</div>\
';
于 2013-08-14T18:21:39.570 回答
0

在 JavaScript 中创建多行字符串有一个很好的技巧,它不涉及转义每一行的换行符,描述于http://tomasz.janczuk.org/2013/05/multi-line-strings-in-javascript -and.html。基本上,您将定义一个函数,其中仅包含您想要的多行字符串的注释,调用toString该函数并删除注释,如下面的示例所示:

var html = (function () {/*
  <!DOCTYPE html>
  <html>
    <body>
      <h1>Hello, world!</h1>
    </body>
  </html>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
于 2013-08-14T18:46:41.297 回答