2012-03-30 5 views
2

Ich durchläuft ein JSON-Objekt und ich bekomme die Daten und erstellt eine Zeile in einer Tabelle. Wenn ich jedoch keine Leerzeichen hinzufüge, wenn ich die Zeilen angehängt habe, d. H. Ich mache nur eine Zeile, funktioniert es.Warum wirken sich Leerzeichen auf JavaScript in meinen HTML-Elementen aus?

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>'; 
} 

Allerdings, wenn ich versuche, es durch Einrücken und das Hinzufügen von Räumen ordentlich aussehen. Es bricht zusammen. Ich verstehe nicht!

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

Hinweis - das ist nicht jQuery das ist JavaScript ... (Tag hinzugefügt) – ManseUK

+1

Die Leerzeichen sind nicht das Problem: Es sind die neuen Zeilen, die das Problem sind. Und das sind allgemeine JavaScript-Syntaxregeln: nichts speziell mit jQuery zu tun. – TRiG

Antwort

8

Sie können nicht nur Zeilenumbrüche innerhalb von Strings Hinzufügen. Sie können diese eine von zwei Möglichkeiten:

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

oder

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

Beachten Sie, dass diese beiden Zeichenfolge nicht gleich sind. Das erste Beispiel hat keinen Abstand zwischen den Zeilen. Das zweite Beispiel enthält den gesamten Leerraum am Anfang der Zeilen in der Zeichenfolge.

+0

Warum in der Welt habe ich einen Downvote bekommen? –

+0

Hier haben Sie eine Verbesserung um sich besser zu fühlen! – Har

+1

Hah, danke. Wenn man sich die Antworten ansieht, scheint jemand die Erwähnung von '\\' gar nicht zu mögen, da alle Fragen damit abgelehnt wurden. Auch wenn ich es nicht mag, ist es immer noch wichtig und wichtig zu verstehen, wie die Sprache funktioniert. Ich sehe nicht, wie ein Downvote ausgelöst wird. –

3

Das ist der Weg, den der Just-Time-Compiler denkt.

eine \ am Ende jeder Zeile innerhalb des „string“

1

Das ist, weil JavaScript injects ; automatically an das Ende Ihrer Zeile, die Ihre Zeichenfolge unterbricht, weil es nicht abgeschlossen ist. Sie können entkommen Linie mit \ endet oder die Zeichenfolge am Zeilenende richtig schließen, die ausführlicher ist und weniger fehleranfällig:

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

Dont mehrzeiligen Strings in Javascript verwenden \ für fälschen wie die anderen vorgeschlagen haben.

Einer dieser Strings hat einen Syntaxfehler, der eine Ausnahme auslöst, können Sie sagen, welche, indem Sie sie betrachten?

Mit \ wird nur nach einem Albtraum Debugging gefragt. Bleiben Sie bei der Kettenverkettung (+) oder Interpolation mit einem der vielen Templating-Systeme wie handlebars oder underscore oder sogar jQuery Templating-Engine.

+0

es ist der erste, aber Sie haben einen starken Punkt angesprochen. – Kaii

Verwandte Themen