2012-08-24 39 views
9

我有一個多行字符串模板在它自己單獨的js文件中用於下劃線js。但是,不管我怎麼逃脫換行符我仍然得到一個:Javascript多行字符串和意外標記ILLEGAL

Uncaught SyntaxError: Unexpected token ILLEGAL

上的文件的1號線時,它的加載到瀏覽器。

App.Templates['template1'] = '\ 

<div data-role="page" data-theme="c" id="" data-title="">\ 

    <div data-role="content" class="subnav">\ 

     <table id="day-table" cellpadding="0" cellspacing="0" border="0">\ 
      <thead class="ui-body-a">\ 
       <tr>\ 
        <th>T</th>\ 
        <th>J</th>\ 
        <th>H</th>\ 
        <th>C</th>\ 
       </tr>\ 
      </thead>\ 
      <tbody>\ 
      </tbody>\ 
      <tfoot>\ 
       <tr>\ 
        <td class="total-label" colspan="2">Total:</td>\ 
        <td class="total"></td>\ 
       </tr>\ 
       <tr>\ 
        <td class="btn-row">\ 
         <a href="#r" data-role="button" id="add-btn" data-rel="dialog" data-mini="true" data-inline="true" data-icon="add">Add Rows</a>\ 
         <a href="#" data-role="button" id="save-btn" data-rel="dialog" data-mini="true" data-inline="true" data-theme="b" data-icon="check">Save</a>\ 
        </td>\ 
       </tr>\ 
      </tfoot>\ 
     </table>\ 

    </div><!--/content-->\ 

</div><!-- /page -->'; 

任何想法?

+1

你缺少了不少''\\的 – Esailija

+0

我愛的Javascript,但有時它讓我想要做很多sobtears出我的眼睛。 –

回答

11

行結束未在弦不準,你需要轉義:

App.Templates['template1'] = '\ 
\ 
<div data-role="page" data-theme="c" id="" data-title="">\ 
\ 
    <div data-role="content" class="subnav">\ 
\ 
     <table id="day-table" cellpadding="0" cellspacing="0" border="0">\ 
      <thead class="ui-body-a">\ 
       <tr>\ 
        <th>T</th>\ 
        <th>J</th>\ 
        <th>H</th>\ 
        <th>C</th>\ 
       </tr>\ 
      </thead>\ 
      <tbody>\ 
      </tbody>\ 
      <tfoot>\ 
       <tr>\ 
        <td class="total-label" colspan="2">Total:</td>\ 
        <td class="total"></td>\ 
       </tr>\ 
       <tr>\ 
        <td class="btn-row">\ 
         <a href="#r" data-role="button" id="add-btn" data-rel="dialog" data-mini="true" data-inline="true" data-icon="add">Add Rows</a>\ 
         <a href="#" data-role="button" id="save-btn" data-rel="dialog" data-mini="true" data-inline="true" data-theme="b" data-icon="check">Save</a>\ 
        </td>\ 
       </tr>\ 
      </tfoot>\ 
     </table>\ 
\ 
    </div><!--/content-->\ 
\ 
</div><!-- /page -->'; 

爲了更容易地看到你有行結束符,你可以在你的文本編輯器打開可見的空白,你應該看到這樣的事情:

enter image description here

+0

感謝您的回答。即使我通過一些試驗和錯誤的方法來弄清楚,我會接受你的答案。 –

+0

@XMO要理解的重要一點是,你正在逃避「看不見的」換行符......一個「空」行仍然有換行符。您可以在文本編輯器中打開可見的新行,並查看他們需要轉義的位置。 – Esailija

+0

我必須弄清楚如何在SublimeText中做到這一點。謝謝! –

2

我想通了。空行也需要逃脫。

App.Templates['template1'] = '\ 
\ 
<div data-role="page" data-theme="c" id="" data-title="">\ 
\ 
    <div data-role="content" class="subnav">\ 
\ 
     <table id="day-table" cellpadding="0" cellspacing="0" border="0">\ 
      <thead class="ui-body-a">\ 
       <tr>\ 
        <th>T</th>\ 
        <th>J</th>\ 
        <th>H</th>\ 
        <th>C</th>\ 
       </tr>\ 
      </thead>\ 
      <tbody>\ 
      </tbody>\ 
      <tfoot>\ 
       <tr>\ 
        <td class="total-label" colspan="2">Total:</td>\ 
        <td class="total"></td>\ 
       </tr>\ 
       <tr>\ 
        <td class="btn-row">\ 
         <a href="#r" data-role="button" id="add-btn" data-rel="dialog" data-mini="true" data-inline="true" data-icon="add">Add Rows</a>\ 
         <a href="#" data-role="button" id="save-btn" data-rel="dialog" data-mini="true" data-inline="true" data-theme="b" data-icon="check">Save</a>\ 
        </td>\ 
       </tr>\ 
      </tfoot>\ 
     </table>\ 
\ 
    </div><!--/content-->\ 
\ 
</div><!-- /page -->'; 
+0

是的,它實際上只是一個換行符,必須被轉義 - 這與特定行上的內容無關。 – pimvdb