繁体   English   中英

如何在JavaScript中连接多行字符串?

[英]How can I concatenate multiline string in javascript?

对于添加<li>的正确语法,有很多结果,但是我正在尝试找到一种解决方案,其中+this['name']+值包含在<li> firebug显示'SyntaxError: unterminated string literal'而jslint显示'Unclosed string' 我已经尝试了逗号位置的许多不同变体,但无法使其正常工作。

 $.each(data.result, function() {
     $("ul").append("<li>Name: "+this['name']+"</li>
                     <li>Age: "+this['age']+"</li>
                     <li>Company: "+this['company']+"</li>
                     <br />");
 });

谢谢。

您可以使用反斜杠字符\\来换行,如下所示:

 $.each(data.result, function(){
 $("ul").append("<li>Name: " + this['name'] + "</li> \
     <li>Age: " + this['age'] + "</li> \
     <li>Company: "+this['company']+"</li> \
     <br />");
 });

这是因为Javascript会在行尾的某个时间自动插入半列。 在这种情况下,您的字符串不是紧密的。 另一种解决方案是关闭每行上的每个字符串,并使用+合并它们。

 $.each(data.result, function(){
 $("ul").append("<li>Name: " + this['name'] + "</li>" +
     "<li>Age: " + this['age'] + "</li>" +
     "<li>Company: "+this['company']+"</li>" +
     "<br />");
 });

(无关,但<ul>元素内不允许您使用<br/>

这应该更快

 li = '';
 $.each(data.result, function(){
     li += "<li>Name: " + this['name'] + "</li>" +
          "<li>Age: " + this['age'] + "</li>" +
          "<li>Company: "+this['company']+"</li>" +
          "<br />"; // could remove this and use css
 });

 $("ul").append(li);

参见http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/

您实际上根本不想将其串联起来! 考虑一下包含HTML或类似HTML的数据的可变数据会发生什么。 使用您的方法,它将被如此解析,可能会破坏事物,甚至使您对XSS攻击方法开放。

您已经在使用jQuery,因此正确的方法很简单:

$('ul').append(
    $('<li/>').text('Name: ' + this.name), 
    $('<li/>').text('Age: ' + this.age),
    // etc.
);

(注意:我相信.append() 允许您提供尽可能多的参数 。如果不允许,请尝试在添加时使用元素数组。)

您应该使用模板文字,以获取更多信息

$.each(data.result, function() {
     $("ul").append(`<li>Name: ${this['name']} </li>
       <li>Age: ${this['age']} </li>
       <li>Company: ${this['company']} </li>
       <br />
     `);
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM