2012-03-30 57 views
2

我正在遍歷JSON對象,我正在獲取數據並在表中創建了一行。但是,當我追加行時,如果我沒有放置空格,即我只將它製作成一行,它就可以工作。爲什麼空格會影響我html元素中的JavaScript?

for(var i in data.students) 
{  
    table += 
     '<tr><td id="studentName">' + data.students[i].firstname + ' ' + data.students[i].lastname +'</td><td><select class="attendSelect" id="studentSelect'+ data.students[i].lastname +'"><option value="Attended">Attended</option><option value="Excused">Excused</option><option value="Absent">Did not Attend</option></select></td></tr>'; 
} 

但是,當我嘗試通過縮進和添加空格使其看起來整齊時。它分手了。我不明白!

for(var i in data.students) 
{  
    table += 
     '<tr> 
      <td id="studentName">' + data.students[i].firstname + ' ' + data.students[i].lastname +'</td> 
      <td> 
       <select class="attendSelect" id="studentSelect'+ data.students[i].lastname +'"> 
        <option value="Attended">Attended</option> 
        <option value="Excused">Excused</option> 
        <option value="Absent">Did not Attend</option> 
       </select> 
      </td> 
     </tr>'; 
} 
+1

注意 - 這不是jQuery這是JavaScript ...(標記已添加) – ManseUK 2012-03-30 13:31:10

+1

空格不是問題:這是新行是問題。這是一般的javascript語法規則:與jQuery無關。 – TRiG 2012-03-30 13:31:14

回答

8

內你不能只添加字符串的內線回報。你可以做的兩種方式這一個:

var mystring = "this" + 
       "is multi" + 
       "line"; 

var mystring = "this \ 
       is multi \ 
       line"; 

注意這兩個字符串不相等。第一個示例在行之間沒有空格。第二個例子包括字符串中行首的所有空格。

+0

爲什麼我在世界上得到一個downvote? – 2012-03-30 14:03:05

+0

這裏有一個upvote感覺更好! – Har 2012-03-30 16:25:34

+1

哈,謝謝。看看答案,看起來有人甚至不喜歡使用'\\',因爲所有的問題都被降低了。雖然我不喜歡使用它,但瞭解語言的工作原理仍然有效且重要。看不到downvote是如何被warrented的。 – 2012-03-30 17:04:50

3

這就是編譯器認爲的那種方式。

在每行的末尾添加\「字符串」

1

這是因爲JavaScript injects ; automatically到您的行的末尾,它打破了你的字符串,因爲它沒有終止。您可以逃脫與\行結束或適當收線結束的字符串,這是更冗長,不容易出錯:

for(var i in data.students) 
{  
    table += '<tr>' + 
      '<td id="studentName">' + data.students[i].firstname + ' ' + data.students[i].lastname +'</td>' + 
      '<td>' 
       '<select class="attendSelect" id="studentSelect' + 
        data.students[i].lastname +'">' + 
        '<option value="Attended">Attended</option>' + 
        '<option value="Excused">Excused</option>' + 
        '<option value="Absent">Did not Attend</option>' + 
       '</select>' + 
      '</td>' + 
     '</tr>'; 
} 
1

不使用\對於像其他人所說的JavaScript僞造多行字符串。

str = "this \ 
     is a multiline \ 
     string"; 


str = "this \ 
     is a multiline \ 
     string"; 

其中一個字符串有一個語法錯誤,會拋出一個異常,你可以通過查看它們來判斷哪個字符?

使用\只是要求一個調試噩夢。堅持字符串連接(+)或使用其中一個模板系統插值,如handlebarsunderscore甚至jQuery的模板引擎。

+0

這是第一個,但你提出了一個強項。 – Kaii 2012-03-30 13:45:27

相關問題