2012-08-24 25 views
9

Tengo una plantilla de cadena de varias líneas en su propio archivo js para utilizar en guiones bajos j. Sin embargo, no importa cómo escapar de los saltos de línea sigo teniendo una:Cadena de varias líneas JavaScript y Token inesperado ILLEGAL

Uncaught SyntaxError: Unexpected token ILLEGAL

En la línea 1 del archivo cuando se carga en el navegador.

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

¿Alguna idea?

+1

Te faltan unos cuantos '' \\ 's – Esailija

+0

Me encanta Javascript, pero a veces me dan ganas de hacer un montón de sobtears de los ojos. –

Respuesta

11

terminadores de línea no están permitidos en las cadenas, es necesario para escapar de ellos:

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

Para que sea más fácil ver donde se tiene terminaciones de línea, puede activar el espacio en blanco visible en el editor de texto y deberías ver algo como esto:

enter image description here

+0

Gracias por la respuesta. Aunque lo descubrí con un poco de prueba y error, aceptaré el tuyo como respuesta. –

+0

@XMO lo importante es comprender que se está escapando de los caracteres de línea nueva "invisibles" ... una línea "vacía" todavía tiene un carácter de línea nueva allí. Puede activar las nuevas líneas visibles en un editor de texto y ver dónde se deben escapar. – Esailija

+0

Tendré que descubrir cómo hacerlo en SublimeText. ¡Gracias! –

2

lo he descubierto. Las líneas vacías también deben ser escapadas.

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

Sí, en realidad es solo un carácter de nueva línea que debe escaparse, no importa lo que esté en una línea específica. – pimvdb

Cuestiones relacionadas