簡體   English   中英

未終止的字符串文字

[英]unterminated string literal

以下代碼:

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>"

等等...

如果在JavaScript中使用多行字符串,則必須在每行的末尾使用“\\”:

var str = "abc\
def\
ghi\
jkl";

如果你的代碼是縮進的,也要注意額外的空格。

我建議以不同的方式做到這一點......用HTML隱藏元素,例如

<div id="myHiddenDiv" style="display: none;"><strong>English Comprehension</strong>
<br />
...
</div>

然后只需閱讀其內部HTML:

var str = document.getElementById("myHiddenDiv").innerHTML;

最大的好處是你不必用文字字符串來對抗你的方式,而且編輯要容易得多,缺點是你要為DOM添加另一個元素。 你的選擇。 :)

在Javascript中編寫多行字符串不是最佳實踐。

但是,您可以使用\\ terminator執行此操作:

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 stringBuilder = [];

stringBuilder.push("<strong>English Comprehension</strong>");
stringBuilder.push("<br />");
stringBuilder.push("<ul>");
...
var resultString = stringBuilder.join("");

這種方法比快

var str = "a"+"b" +"c"

如果要將數據保存在一個字符串塊中,請嘗試:

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 +模板文字 ,它使用反引號代替'"並允許文字換行符:

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引擎(或者如果你轉換)。

請注意,在模板中,文字${...}具有特殊含義(允許您替換任何表達式的結果:

let v = "Ma";
console.log(`Look ${v}, no hands!`); // Look Ma, no hands!

刪除換行符,它會起作用。 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);

我的代碼是response.write(),我需要在iframe中的表單上插入html輸出POST SUbmit。 從文本編輯器復制我的代碼時,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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM