2012-08-24 9 views
9

Ich habe eine mehrzeilige Zeichenfolge Vorlage in eigenen eigenen js-Datei für die Verwendung in Unterstreichung js. Doch egal, wie ich die Zeilenumbrüche entkommen ich noch eine bekommen:Javascript Mehrzeilige Zeichenfolge und unerwartete Token ILLEGAL

Uncaught SyntaxError: Unexpected token ILLEGAL

Zeile 1 der Datei, wenn es in den Browser geladen.

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

Irgendwelche Ideen?

+1

Sie fehlen ganz wenige '' \\ 's – Esailija

+0

Ich liebe Javascript, aber manchmal macht es mir viel sobtears aus meinen Augen tun wollen. –

Antwort

11

Zeilenende in Zeichenketten nicht erlaubt sind, müssen Sie sie entkommen:

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

es einfacher zu machen, um zu sehen, wo Sie Linie Terminatoren haben, können Sie auf sichtbare Leerzeichen in Ihrem Texteditor drehen kann, und Sie sollten etwas sehen wie folgt aus:

enter image description here

+0

Danke für die Antwort. Auch wenn ich es mit etwas Versuch und Irrtum herausgefunden habe, akzeptiere ich deine als Antwort. –

+0

@XMO die wichtige Sache zu verstehen ist, dass Sie die "unsichtbaren" Newline-Zeichen entkommen ... eine "leere" Zeile hat immer noch einen Newline-Charakter in dort. Sie können sichtbare neue Zeilen in einem Texteditor aktivieren und sehen, wo sie maskiert werden müssen. – Esailija

+0

Ich werde herausfinden müssen, wie man das in SublimeText macht. Vielen Dank! –

2

ich es herausgefunden. Leere Zeilen müssen ebenfalls maskiert werden.

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

Ja, es ist nur ein Newline-Zeichen, das es zu maskieren gilt - es spielt keine Rolle, was auf einer bestimmten Zeile steht. – pimvdb