未结束的字符串
下面的代码:未结束的字符串
var str= "<strong>English Comprehension<\/strong>
<br\/>
<ul>
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>
<li> Complete the Sentence (Grammar)<\/li>
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>
<li> Sentence Ordering (Comprehension skills)<\/li>
<li> Questions based on passage (Comprehension skills)<\/li>
<\/ul>
<br\/>";
给出了错误: “未终止的字符串常量”。有什么问题?
在Javascript中编写多行字符串不是最佳做法。
但是,你可以做到这一点与\
终止:
var str= "<strong>English Comprehension<\/strong>\
<br\/>\
<ul>\
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\
<li> Complete the Sentence (Grammar)<\/li>\
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\
<li> Sentence Ordering (Comprehension skills)<\/li>\
<li> Questions based on passage (Comprehension skills)<\/li>\
<\/ul>\
<br\/>";
注意,尾随空格是字符串的一部分,所以它是更好地摆脱他们,除非他们是故意的:
var str= "<strong>English Comprehension<\/strong>\
<br\/>\
<ul>\
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\
<li> Complete the Sentence (Grammar)<\/li>\
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\
<li> Sentence Ordering (Comprehension skills)<\/li>\
<li> Questions based on passage (Comprehension skills)<\/li>\
<\/ul>\
<br\/>";
你不能像在javascript中那样在线上分割字符串。你可以通过使每行一个单独的字符串,并用加号将它们像这样完成同样的可读性:
var str = "<strong>English Comprehension</strong>"
+ "<br />"
+ "<ul>"
+ "<li>Synonyms/Antonyms/Word Meaning (Vocabulary)</li>"
等等...
Thanks.It对我来说工作正常:) – pinku 2013-02-08 05:27:29
删除换行符,它会奏效。 GOTCHA记住;) 看到它简单的作品都在这里很好不换行: http://jsfiddle.net/87dYh/
var str= "<strong>English Comprehension<\/strong><br\/><ul> <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li> <li> Complete the Sentence (Grammar)<\/li> <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li> <li> Sentence Ordering (Comprehension skills)<\/li> <li> Questions based on passage (Comprehension skills)<\/li> <\/ul> <br\/>";
alert(str);
如果使用JavaScript的多行字符串必须使用“\”中的每一行的末尾:
var str = "abc\
def\
ghi\
jkl";
如果您的代码缩进,还要注意额外的空格。
来连接在JavaScript字符串的好方法是休耕:
var stringBuilder = [];
stringBuilder.push("<strong>English Comprehension</strong>");
stringBuilder.push("<br />");
stringBuilder.push("<ul>");
...
var resultString = stringBuilder.join("");
这种方法速度比
var str = "a"+"b" +"c"
有趣的技巧,尽管在原始代码中没有字符串连接。 – 2011-03-14 09:06:07
Thanx,它会非常有帮助 – VIKASH 2011-03-21 04:56:21
我建议以不同的方式做到这一点...有隐藏的元素与HTML例如
<div id="myHiddenDiv" style="display: none;"><strong>English Comprehension</strong>
<br />
...
</div>
然后简单地读取其内部HTML:
var str = document.getElementById("myHiddenDiv").innerHTML;
最大的好处是,你将不必与文字字符串打你的方式,它更容易编辑,不足之处是您将另一个元素添加到DOM。你的选择。 :)
最终我用你的方法做到了。使用Jquery。 – VIKASH 2011-03-21 04:55:50
欢呼@VIKASH,随时通过点击左边的“V”图标来接受答案。对于其他问题也一样 - 接受正确的答案就是这个地方是如何工作的。 :) – 2011-03-21 08:36:18
我的代码是一个response.write(),我需要插入HTML输出POST SUbmit在Iframe中的窗体上。当从文本编辑器复制我的代码时,Carraige返回结果进入代码窗口。一旦我删除了我的回报和空白标签之间,这样的代码看起来像固定的问题块段:
("loremIPSUM.<br><br><h2>Title</h2><br>loremIPSUM:<br><br><br><a href='http://url1'>lnk1</a><br><br><a href='http://url2'>loremIPSUMlnk2</a><br><br><a href='http://url3'>loremIPSUM</a><br><br><a href='url4'>IF THE case id is: "</a>"+value)
如果你想保持字符串的一个块数据,可尝试:
var str= "<strong>English Comprehension</strong>\n\
<br />\n\
<ul>\n\
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)</li>\n\
<li> Complete the Sentence (Grammar)</li>\n\
<li> Spot error/Correct sentence (Grammar/sentence construction)</li>\n\
<li> Sentence Ordering (Comprehension skills)</li>\n\
<li> Questions based on passage (Comprehension skills)</li>\n\
</ul>\n\
<br />";
注意每行末尾的\n\
。
的JavaScript不允许在字符串字面换行,除非你逃脱他们\
:
var str= "<strong>English Comprehension<\/strong>\
<br\/>\
<ul>\
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\
<li> Complete the Sentence (Grammar)<\/li>\
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\
<li> Sentence Ordering (Comprehension skills)<\/li>\
<li> Questions based on passage (Comprehension skills)<\/li>\
<\/ul>\
<br\/>";
你可能看ES2015+ template literals代替,其中使用反引号,而不是'
或"
,让文字换行:
var str= `<strong>English Comprehension<\/strong>
<br\/>
<ul>
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>
<li> Complete the Sentence (Grammar)<\/li>
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>
<li> Sentence Ordering (Comprehension skills)<\/li>
<li> Questions based on passage (Comprehension skills)<\/li>
<\/ul>
<br\/>`;
但是,当然,这只适用于ES2015兼容的JavaScript引擎(或者如果你transpile)。
注意,在模板中文字${...}
具有特殊的意义(允许你替换任何表达式的结果:
let v = "Ma";
console.log(`Look ${v}, no hands!`); // Look Ma, no hands!
为什么你'\ /'代码中的斜杠是不是一个特殊字符? 。它不需要转义 – 2011-03-14 09:18:42