2011-03-14 19 views
23

El siguiente código:cadena incompleta literal

var str= "<strong>English Comprehension<\/strong> 
        <br\/> 
        <ul> 
        <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li> 
        <li> Complete the Sentence (Grammar)<\/li> 
        <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li> 
        <li> Sentence Ordering (Comprehension skills)<\/li> 
        <li> Questions based on passage (Comprehension skills)<\/li> 
        <\/ul> 
        <br\/>"; 

da el error: "cadena incompleta literal". ¿Cuál es el problema?

+3

¿Por qué tienes '\ /' en su código Una barra no es un carácter especial? .No necesita ser escapado. –

Respuesta

6

No es una práctica recomendada escribir cadenas multilínea en Javascript.

embargo, se puede hacer eso con la \ terminador:

var str= "<strong>English Comprehension<\/strong>\ 
       <br\/>\ 
       <ul>\ 
       <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
       <li> Complete the Sentence (Grammar)<\/li>\ 
       <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
       <li> Sentence Ordering (Comprehension skills)<\/li>\ 
       <li> Questions based on passage (Comprehension skills)<\/li>\ 
       <\/ul>\ 
       <br\/>"; 

Tenga en cuenta que los espacios finales son parte de la cadena, por lo que es mejor deshacerse de ellos, a menos que sean intencionales:

var str= "<strong>English Comprehension<\/strong>\ 
<br\/>\ 
<ul>\ 
<li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
<li> Complete the Sentence (Grammar)<\/li>\ 
<li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
<li> Sentence Ordering (Comprehension skills)<\/li>\ 
<li> Questions based on passage (Comprehension skills)<\/li>\ 
<\/ul>\ 
<br\/>"; 
38

No se puede dividir una cadena en líneas como esa en javascript. Se podría lograr la misma facilidad de lectura al hacer que cada línea de una cadena separada y concatenar con el signo más, así:

var str = "<strong>English Comprehension</strong>" 
    + "<br />" 
    + "<ul>" 
    + "<li>Synonyms/Antonyms/Word Meaning (Vocabulary)</li>" 

y así sucesivamente ...

+0

Gracias. Está funcionando bien para mí :) – pinku

1

Retire los saltos de línea, que va a funcionar. GOTCHA a tener en cuenta;) lo ven obras sencillas todo bien aquí sin saltos de línea: http://jsfiddle.net/87dYh/

var str= "<strong>English Comprehension<\/strong><br\/><ul> <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>     <li> Complete the Sentence (Grammar)<\/li>     <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>  <li> Sentence Ordering (Comprehension skills)<\/li>     <li> Questions based on passage (Comprehension skills)<\/li>     <\/ul>    <br\/>"; 

alert(str); 
18

Si se utiliza cadena de multilínea en JavaScript debe utilizar '\' en el final de cada línea:

var str = "abc\ 
def\ 
ghi\ 
jkl"; 

También tenga cuidado con el espacio en blanco adicional si su código está sangrado.

3

Una buena manera de concatenar cadenas en Javascript es el barbecho:

var stringBuilder = []; 

stringBuilder.push("<strong>English Comprehension</strong>"); 
stringBuilder.push("<br />"); 
stringBuilder.push("<ul>"); 
... 
var resultString = stringBuilder.join(""); 

Este método rápido que

var str = "a"+"b" +"c" 
+0

Truco interesante, aunque en el código original no hay concatenación de cadenas. –

+1

Gracias, será muy útil – VIKASH

11

Sugiero hacerlo de otro modo ... han ocultado con elemento HTML que, por ejemplo,

<div id="myHiddenDiv" style="display: none;"><strong>English Comprehension</strong> 
<br /> 
... 
</div> 

Después, simplemente lea el código HTML interno:

var str = document.getElementById("myHiddenDiv").innerHTML; 

La gran ventaja es que usted no tendrá que luchar su camino con cadenas literales y es mucho más fácil de editar, el inconveniente es que agregas otro elemento al DOM. Tu elección. :)

+0

eventualmente lo hice usando su método. Usando Jquery. – VIKASH

+2

Cheers @VIKASH, siéntase libre de aceptar la respuesta en tal caso haciendo clic en el ícono "V" a la izquierda. Lo mismo para sus otras preguntas: aceptar las respuestas correctas es cómo funciona este lugar. :) –

0

Mi código era un response.write() donde necesitaba insertar html para salir POST SUbmit en un formulario dentro de un Iframe. Al copiar mi código de un editor de texto, el retorno de carraige se transfiere a la ventana de código.Una vez que he eliminado mis declaraciones y espacios en blanco entre las etiquetas para que el código se parecía a un párrafo bloque que ha solucionado el problema:

("loremIPSUM.<br><br><h2>Title</h2><br>loremIPSUM:<br><br><br><a href='http://url1'>lnk1</a><br><br><a href='http://url2'>loremIPSUMlnk2</a><br><br><a href='http://url3'>loremIPSUM</a><br><br><a href='url4'>IF THE case id is: "</a>"+value) 
1

Si desea mantener sus datos en un bloque de cadena, intente:

var str= "<strong>English Comprehension</strong>\n\ 
       <br />\n\ 
       <ul>\n\ 
       <li> Synonyms/Antonyms/Word Meaning (Vocabulary)</li>\n\ 
       <li> Complete the Sentence (Grammar)</li>\n\ 
       <li> Spot error/Correct sentence (Grammar/sentence construction)</li>\n\ 
       <li> Sentence Ordering (Comprehension skills)</li>\n\ 
       <li> Questions based on passage (Comprehension skills)</li>\n\ 
       </ul>\n\ 
       <br />"; 

observe el \n\ al final de cada línea.

0

JavaScript no permite saltos de línea literales en cadenas a menos que ellos escapan con \:

var str= "<strong>English Comprehension<\/strong>\ 
    <br\/>\ 
    <ul>\ 
    <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li>\ 
    <li> Complete the Sentence (Grammar)<\/li>\ 
    <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li>\ 
    <li> Sentence Ordering (Comprehension skills)<\/li>\ 
    <li> Questions based on passage (Comprehension skills)<\/li>\ 
    <\/ul>\ 
    <br\/>"; 

lo podría hacer en ES2015+ template literals lugar, que utilice acentos abiertos en lugar de ' o " y permitir saltos de línea literales:

var str= `<strong>English Comprehension<\/strong> 
    <br\/> 
    <ul> 
    <li> Synonyms/Antonyms/Word Meaning (Vocabulary)<\/li> 
    <li> Complete the Sentence (Grammar)<\/li> 
    <li> Spot error/Correct sentence (Grammar/sentence construction)<\/li> 
    <li> Sentence Ordering (Comprehension skills)<\/li> 
    <li> Questions based on passage (Comprehension skills)<\/li> 
    <\/ul> 
    <br\/>`; 

Pero, por supuesto, eso solo funciona en los motores JavaScript compatibles con ES2015 (o si transpile).

Tenga en cuenta que dentro de una plantilla literal ${...} tiene un significado especial (lo que le permite sustituir el resultado de cualquier expresión:

let v = "Ma"; 
console.log(`Look ${v}, no hands!`); // Look Ma, no hands! 
Cuestiones relacionadas