2012-03-30 22 views
2

JSONオブジェクトを反復処理していて、データを取得してテーブルに行を作成しています。しかし、行を追加するときに空白を入れないと、つまり行が1行になるだけです。スペースが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

+1

スペースは問題ではありません。これは問題の新しい行です。これは一般的なjavascriptの構文ルールです.jQueryとは特に関係ありません。 – TRiG

答えて

8

内の各ラインの末尾に\を追加します。これら2つの文字列が等しくないことを

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

または

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

注:あなたは、この2つの方法のいずれかを実行することができます。最初の例は、行間にスペースがありません。 2番目の例は、文字列内の行の先頭にあるすべての空白を含みます。

+0

なぜ世界で私はdownvoteを取得しましたか? –

+0

ここでは気分が良くなるupvoteがあります!おはよう、ありがとうございます。 – Har

+1

答えを見ると、誰かがそれに伴うすべての質問が下降しているので、誰かが '\\'を使うことの言葉が好きではないようです。私はそれを使うのが好きではありませんが、言語の仕組みを理解することは有効で重要です。下垂体がどのように勇気づけられているかを見ないでください。 –

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

これらの文字列の1つに例外をスローする構文エラーがあります。どの文字列を見てもわかりますか?

\を使用すると、デバッグの悪夢が尋ねられます。文字列連結(+)や、handlebarsまたはunderscoreなどの多くのテンプレートシステムの1つを使用して補間するか、jQueryのテンプレートエンジンを使用することもできます。

+0

それは最初のものですが、あなたは強いポイントを挙げました。 – Kaii

関連する問題