2012-03-30 60 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

相关问题