Javascript错误-如果连接字符串中有空格,则连接时未终止字符串文字
在某些情况下,我需要通过JavaScript构建字符串以附加到HTML元素 我的方法通常是这样做:Javascript错误-如果连接字符串中有空格,则连接时未终止字符串文字,javascript,string,concatenation,Javascript,String,Concatenation,在某些情况下,我需要通过JavaScript构建字符串以附加到HTML元素 我的方法通常是这样做: document.getElementById('theID').innerHTML=document.getElementById('theID').innerHTML+'<li>theString</li>'; document.getElementById('theID').innerHTML=document.getElementById('theID').inn
document.getElementById('theID').innerHTML=document.getElementById('theID').innerHTML+'<li>theString</li>';
document.getElementById('theID').innerHTML=document.getElementById('theID').innerHTML+'字符串 ;
除非附加的字符串是包含JavaScript变量和文本的高级HTML,否则这种方法很好用。在这些情况下,除非它仍然有代码间隔(空白),否则它将成为一个混乱的混乱
我想要的示例:
document.getElementById('theID').innerHTML=
document.getElementById('theID').innerHTML+
"<ul>
<li><a href='"+varLink+"'>"+var1+"</a></li>
</ul>";
document.getElementById('theID').innerHTML=
document.getElementById('theID').innerHTML+
“
”;
我的问题是它不能有任何空格,或者我在页面加载时得到一个未终止的字符串文本。甚至连用于连接的“+”后面和前面的空格都会导致错误。如果我删除了字符串中的所有空白,那么它可以正常工作,但正如我所说的,很难维护/编辑
首先,有没有更好的方法通过jQuery来实现这一点,而不会在页面加载时生成相同的错误?除此之外,有没有办法在不获取未终止字符串文字的情况下保留空格?我不知道这是否回答了您的问题,但是如果您需要空间,您需要使用
+
我知道的使其工作的方法如下
document.getElementById('theID').innerHTML +=
document.getElementById('theID').innerHTML =
"<ul>"+
" <li><a href='"+varLink+"'>"+var1+"</a></li>"+
"</ul>";
}
document.getElementById('theID').innerHTML+=
document.getElementById('theID')。innerHTML=
“”+
“”+
“
”;
}
我不知道这是否回答了你的问题,但是如果你想要空间,你需要使用+
我知道的让它工作的方法是
document.getElementById('theID').innerHTML +=
document.getElementById('theID').innerHTML =
"<ul>"+
" <li><a href='"+varLink+"'>"+var1+"</a></li>"+
"</ul>";
}
document.getElementById('theID').innerHTML+=
document.getElementById('theID')。innerHTML=
“”+
“”+
“
”;
}
jQuery的等价物将更整洁:
$('#theID')。追加(…) jQuery等价物将更整洁: $('#theID')。追加(…) 您可以使用单个
\
来逃避,但这不是一个好主意,因为它不是标准的一部分
var s ="<ul> \r\n\
<li><a href='"+varLink+"'>"+var1+"</a></li> \r\n\
bla bla bla \r\n\
</ul>";
var s=“\r\n\
\r\n\
bla bla bla bla\r\n\
”;
唯一的另一种方法是分别连接字符串的每个部分。使用数组可以是高效的/可读的
var buff = [];
buff.push("<li>...");
buff.push("</ul>");
document.getElementById('theID').innerHTML += buff.join("\r\n");
var buff=[];
buff.push(“”);
buff.push(“”);
document.getElementById('theID')。innerHTML+=buff.join(“\r\n”);
您可以使用单个\
来逃避,但这不是一个好主意,因为它不是标准的一部分
var s ="<ul> \r\n\
<li><a href='"+varLink+"'>"+var1+"</a></li> \r\n\
bla bla bla \r\n\
</ul>";
var s=“\r\n\
\r\n\
bla bla bla bla\r\n\
”;
唯一的另一种方法是分别连接字符串的每个部分。使用数组可以是高效的/可读的
var buff = [];
buff.push("<li>...");
buff.push("</ul>");
document.getElementById('theID').innerHTML += buff.join("\r\n");
var buff=[];
buff.push(“”);
buff.push(“”);
document.getElementById('theID')。innerHTML+=buff.join(“\r\n”);
<代码> > p>你的问题不是空格,它的行在字符串中间。你可以通过\
解决这个问题,但正如Alex K所提到的,这是非标准的
无论如何,我愿意做这样的事
document.getElementById('theID').innerHTML += [
"<ul>",
"<li><a href='", varLink, "'>", var1, "</a></li>",
"</ul>"
].join('');
document.getElementById('theID')。innerHTML+=[
“”,
“”,
“
”
].加入(“”);
创建一个数组,连接这些值并将它们附加到innerHTML。您可以为演示文稿添加空白,而不会出现错误
P.S.P.这基本上是Alex K的回答,有一些调整,我赞成他的观点。 < P>你的问题不是空格,它在字符串的中线断裂。你可以通过\
解决这个问题,但正如Alex K所提到的,这是非标准的
无论如何,我愿意做这样的事
document.getElementById('theID').innerHTML += [
"<ul>",
"<li><a href='", varLink, "'>", var1, "</a></li>",
"</ul>"
].join('');
document.getElementById('theID')。innerHTML+=[
“”,
“”,
“
”
].加入(“”);
创建一个数组,连接这些值并将它们附加到innerHTML。您可以为演示文稿添加空白,而不会出现错误
另外,这基本上是Alex K的答案,我对他的答案进行了一些调整。你是说你上面的代码按原样工作,但是如果innerHTML+“”,
更改为innerHTML+“”,
?。更有可能是一些嵌入的引号将其丢弃。@nickf-是的,这就是我要说的。在连接字符串内(即引号内)或在连接字符串的加号之前或之后添加空格会导致字符串文字未终止。我编辑了我的示例来说明我的意思。@Dave Newton-是的,我第一次遇到这种情况时花了几个小时来查找,但实际上是代码中的空格(或者更具体地说,空格)导致了字符串文字的未终止。如果我使用相同的代码并删除所有空格,效果很好。@DaveNewton-澄清-如果我删除引号和标记之外的所有空格,效果很好。在输出到浏览器的任何HTML元素中都可以有空格,但如果它在标记(即空格)之外,或者显然在连接符号旁边的引号之外,则不能。您是说上述代码按原样工作吗,但是如果innerHTML+'..
更改为innerHTML+'..
,则会中断。更有可能是一些嵌入的引号将其丢弃。@nickf-是的,这就是我要说的。在连接字符串内(即引号内)或在连接字符串的加号之前或之后添加空格会导致字符串文字未终止。我编辑了我的示例来说明我的意思。@Dave Newton-是的,我第一次遇到这种情况时花了几个小时来查找,但实际上是代码中的空格(或者更具体地说,空格)导致了字符串文字的未终止。如果我使用相同的代码并删除所有空格,效果很好。@DaveNewton-澄清-如果我删除引号和标记之外的所有空格,效果很好。在输出到浏览器的任何HTML元素中都可以有空格