2009-11-14 8 views
5

Fehlerkonsole: ungekündigten StringliteralJavascript-Code, unterminierter Stringliteral

$html='<li><div class="above">'+$question_number+ 'Question Title</div> 

Der JQuery-Code ist:

$html='<li><div class="above">'+$question_number+ 'Question Title</div> 
<div class="middle"> <input type="text" name="question'+$question_number+ '" size="55"/></div> 
<div class="below">'+$question_number+ ' <input type="text" name="option'+$question_number+ '" size="6"/>'+$question_number+ '<input type="text" name="option'+$question_number+ '" size="6"/> 
    <input class="btn" type="button" name="Submit" value="Add" /> 
    <input class="btn" type="button" name="Submit" value="Remove" /> 
    </div> 
</li>'; 

Ich kenne den Wert von $ html ist lang, aber wie kann ich entkommen die Falle von "nicht abgeschlossenem String-Literal"? Gibt es ein besseres um dieses Problem zu umgehen?

Antwort

15

Ihre Zeilen benötigen das Fortsetzungszeichen, wenn Sie die Zeichenfolgenliterale über mehrere Zeilen hinweg ausführen möchten. Setzen Sie ein "\" Zeichen an das Ende jeder Zeile oder verwenden Sie Zeichenfolge Verkettung. Mit anderen Worten, Sie könnten das falsche drehen:

$html='<li><div class="above">' + $question_number + 'Question Title</div> 
<div class="middle"> ... '; 

in:

$html='<li><div class="above">' + $question_number + 'Question Title</div>\ 
<div class="middle"> ... '; 

oder:

$html='<li><div class="above">' + $question_number + 'Question Title</div>' + 
    ' <div class="middle"> ... '; 

Sie nicht wirklich Notwendigkeit Ihre HTML schön formatiert werden, aber , wenn Sie es wirklich in einer Form möchten, die Sie gut drucken können, können Sie eingebettete Zeilenumbrüche auch darin einfügen:

$html='<li><div class="above">' + $question_number + 'Question Title</div>\n' + 
    '<div class="middle"> ... '; 

Zur besseren Lesbarkeit des Codes, würde ich so etwas wie verwenden:

$html = \ 
    '<li>' + 
    ' <div class="above">' + $question_number + 'Question Title</div>' + 
    ' <div class="middle">' + 
    ' <input type="text" name="question' + $question_number+ '" size="55"/>' + 
    ' </div>' + 
    ' <div class="below">' + $question_number + 
    ' <input type="text" name="option' + $question_number + 
    '  " size="6"/>' + $question_number + 
    ' <input type="text" name="option' + $question_number + '" size="6"/>' + 
    ' <input class="btn" type="button" name="Submit" value="Add" />' + 
    ' <input class="btn" type="button" name="Submit" value="Remove" />' + 
    ' </div>' + 
    '</li>'; 

und dann durch einen Kompressor passieren eine viel kürzere Version für die Verteilung zu erhalten.

+0

Genius! Dein Vorschlag ist großartig! – Steven

+0

Super Zeug paxdiablo! Vielen Dank! – Trip

1

Man kann immer nur Teile davon auf mehreren Leitungen verketten mögen:

$html='<li><div class="above">'+$question_number+ 'Question Title</div>'; 
$html+= '<div class="middle"> <input type="text" name="question'+$question_number; 
$html+=' size="55"/></div>'; 

usw.

0

Sie Arrays Fragmente von Markup zu speichern verwenden könnten und dann die Join-Methode verwenden, um die vollständigen zu bekommen Auszeichnungs:

a = new Array(20); 
a[0]='<li><div class="above">' 
a[1]= $question_number 
a[2]= 'Question Title</div>' 
a[3]= '<div class="middle">' 
a[4]= '<input type="text" name="question' 
a[5]= $question_number 
a[6]= '" size="55"/></div>' 
a[7]= '<div class="below">' 
a[8]= $question_number 
a[9]= '<input type="text" name="option' 
a[10]=$question_number 
a[11]= '" size="6"/>' 
a[12]=$question_number 
a[13]='<input type="text" name="option' 
a[14]=$question_number 
a[15]='" size="6"/>' 
a[16]='<input class="btn" type="button" name="Submit" value="Add" />' 
a[17]='<input class="btn" type="button" name="Submit" value="Remove" />' 
a[18]='</div>' 
a[19]='</li>' 

$html = a.join(''); 
Verwandte Themen