2011-03-14 81 views
23

下面的代碼:未結束的字符串

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\/>"; 

給出了錯誤: 「未終止的字符串常量」。有什麼問題?

+3

爲什麼你'\ /'代碼中的斜槓是不是一個特殊字符? 。它不需要轉義 – 2011-03-14 09:18:42

回答

6

在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\/>"; 
38

你不能像在javascript中那樣在線上分割字符串。你可以通過使每行一個單獨的字符串,並用加號將它們像這樣完成同樣的可讀性:

var str = "<strong>English Comprehension</strong>" 
    + "<br />" 
    + "<ul>" 
    + "<li>Synonyms/Antonyms/Word Meaning (Vocabulary)</li>" 

等等...

+0

Thanks.It對我來說工作正常:) – pinku 2013-02-08 05:27:29

1

刪除換行符,它會奏效。 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); 
18

如果使用JavaScript的多行字符串必須使用「\」中的每一行的末尾:

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

如果您的代碼縮進,還要注意額外的空格。

3

來連接在JavaScript字符串的好方法是休耕:

var stringBuilder = []; 

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

這種方法速度比

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

有趣的技巧,儘管在原始代碼中沒有字符串連接。 – 2011-03-14 09:06:07

+1

Thanx,它會非常有幫助 – VIKASH 2011-03-21 04:56:21

11

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

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

然後簡單地讀取其內部HTML:

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

最大的好處是,你將不必與文字字符串打你的方式,它更容易編輯,不足之處是您將另一個元素添加到DOM。你的選擇。 :)

+0

最終我用你的方法做到了。使用Jquery。 – VIKASH 2011-03-21 04:55:50

+2

歡呼@VIKASH,隨時通過點擊左邊的「V」圖標來接受答案。對於其他問題也一樣 - 接受正確的答案就是這個地方是如何工作的。 :) – 2011-03-21 08:36:18

0

我的代碼是一個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) 
1

如果你想保持字符串的一個塊數據,可嘗試:

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\

0

的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!