2009-11-14 13 views
5

Hata konsolu: literal Sonlandırılmamış dizeJavascript kodu, sonlandırılmamıs dize

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

JQuery kodu:

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

Ben uzun $ html değerini bilmek, ama nasıl kaçabilir "sonlandırılmamış dize literal" tuzağı? Bu problemi çözmek için daha iyi bir şey var mı?

cevap

15

Dize değişmezlerini birden çok satıra yayınlayacaksanız, satırlarınızın devam karakterine ihtiyacı vardır. Her satırın sonuna bir "\" karakter koyun veya dize birleştirme kullanın. Başka bir deyişle, yanlış dönüşebilir:

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

ya:

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

içine

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

You do not aslında ihtiyaç HTML güzel biçimlendirilmiş olması ancak Gerçekten güzel bir şekilde yazdırabileceğiniz bir formda isterseniz, gömülü yeni satırlar da ekleyebilirsiniz:

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

kod okunabilirliği için, ben böyle bir şey kullanırsınız:

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

ve sonra dağıtım için çok daha kısa bir sürümü almak için bir kompresör geçirin. Her zamanda birden hatlarında bazı kısımlarını birleştirerek,

+0

Genius! Öneriniz harika! – Steven

+0

Harika şeyler paxdiablo! Teşekkürler! – Trip

1

gibi:

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

vb

0
Daha sonra biçimlendirme parçaları saklamak ve diziler kullanabilirsiniz

tam olsun katılmak yöntemi kullanmak biçimlendirme:

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('');