2011-05-10 12 views
7

Este es mi código:problemas string con comillas dobles Javascript dentro de un solo

<script> 
    function popupTest(title) { 
     alert(title); 
     return false; 
    } 
</script> 

<a href="" onclick="return popupTest('This is &#039;some&#039; &quot;test&quot; string')"><span>Recommend</span></a> 

El uso de Firefox 4 me sale el error:

Error: missing) after argument list 
Source Code: 
return popupTest('This is 'some' "test" string') 

Es como que la decodificación de las entidades HTML pero no lo hacen saber porque.

También han intentado ...

<a href="" onclick="return popupTest('This is \'some\' \"test\" string')"><span>Recommend</span></a> 

Lo que posibilita un error:

Error: unterminated string literal 
Source Code: 
return popupTest('This is \'some\' \ 
+0

Si bien las respuestas aquí son correctas, la solución adecuada sería darle al elemento una ID y luego adjuntarle un controlador de eventos utilizando JavaScript en lugar de marcar un atributo 'onclick'. – ThiefMaster

Respuesta

13

&#039; es HTML para'. Así que para el primer ejemplo, el HTML se analiza y se pasa al motor de JavaScript:

return popupTest('This is 'some' "test" string') 

... y la segunda ' termina la cadena.

Por otro lado:

onclick="return popupTest('This is \'some\' \"test\" string')" 

se analiza como:

An onclick attribute with the value return popupTest('This is \'some\' \ followed by some invalid data.

Es necesario tratar con el código JavaScript en primer lugar:

return popupTest('This is \'some\' "test" string') 

y luego escapar por HTML:

onclick="return popupTest('This is \'some\' &quot;test&quot; string')" 

Probablemente sea mejor que use unobtrusive JavaScript y vincule los controladores de eventos con JavaScript en lugar de utilizar atributos de eventos intrínsecos.

Cuestiones relacionadas