2010-01-08 77 views
7
document.getElementById("img").innerHTML="< img src='/sitepath/"+imgg+".jpg' width='72' height='44' onclick='alert('hello');' />"; 

El código anterior es mi javascript. El problema es imprimir hello o cualquier otra cadena. Si acabo de escribir 123 en lugar de hola, da la alerta. Pero no puedo usar una cadena como hola allí. Normalmente, una cadena en una función de alerta se mantiene dentro de comillas '', pero todo el contenido está entre comillas dobles y ya he usado una comilla simple al comienzo de la función onclick. Intenté usar el carácter Escape ("\") pero no me ayudó. ¿Alguna sugerencia?Javascript en html - Uso de comillas simples dentro de otra comilla simple

+1

¿Por qué no elige una respuesta correcta aquí? – Kristopher

Respuesta

14

Prueba esto:

document.getElementById("img").innerHTML = '<img src="/sitepath/' + imgg + '.jpg" width="72" height="44" onclick="alert(\'hello\');" />'; 
0

Usted tendrá que utilizar las comillas dobles y escapar de ella en el atributo onclick

document.getElementById("img").innerHTML="&lt;img src='/sitepath/"+imgg+".jpg' width='72' height='44' onclick=\"alert('hello');\" /&gt;"; 
0

No importa si sus cotizaciones externas son individuales o dobles. Puedes escapar de un personaje dentro de una cadena externa con una barra invertida ... \ 'se convierte' dentro de la cadena misma. O el ejemplo de Darin o Masood funcionará. Pero Masood es ignorante en referencia a la necesidad de utilizar comillas dobles como el recinto exterior.

8

Si usa apóstrofes como delimitador de los atributos HTML, usted tiene que HTML codificar los apóstrofes que se colocan en el interior del atributo:

document.getElementById("img").innerHTML="< img src='/sitepath/"+imgg+".jpg' width='72' height='44' onclick='alert(&#39;hello&#39;);' />"; 

Yo prefiero usar apóstrofes como cadena delimitada en Javascript y comillas como delimitadores para atributos HTML A continuación, sólo escapar de los apóstrofes que tiene dentro de la cadena de JavaScript:

document.getElementById("img").innerHTML='< img src="/sitepath/'+imgg+'.jpg" width="72" height="44" onclick="alert(\'hello\');" />'; 

poner cualquier cadena dentro de un Javascript, dentro de un atributo HTML, dentro de una cadena en Javascript, que hace:

  • de escape ningún delimitador de cadena en la cadena
  • codificación HTML el código Javascript
  • de escape ningún delimitador de cadena en la cadena HTML
+0

No son apóstrofes: son comillas simples. Los apóstrofes son del mismo personaje, pero cumplen una función gramatical bastante diferente. – TRiG

+2

@TRiG: Sí, son apóstrofes. Para ser específico, es un "apóstrofo de máquina de escribir". Una cita no es un personaje en absoluto, es el texto que coloca entre comillas, por lo que para ser correcto debe llamarlo "comillas simples", que es un poco engorroso, y aún no es realmente correcto ya que es un personaje diferente. Las comillas reales (simples, dobles y todas las demás) son caracteres tipográficos, y no lo que se usa en Javascript. – Guffa

3

Tiene JavaScript dentro de HTML dentro de JavaScript. Eso es naturalmente confuso. Es mejor evitar los problemas de cadena de eslinga de cotización y escape (que, se equivocó, puede conducir fácilmente a los agujeros de seguridad cuando se utiliza los datos enviados por el usuario), y hacerlo de la manera DOM:

var img= new Image(); 
img.src= '/sitepath/'+imgg+'.jpg'; 
img.width= 72; 
img.height= 44; 
img.onclick= function() { 
    alert('hello'); 
}; 
document.getElementById('img').appendChild(img); 
0

lo que si alguien necesita enviar una variable en lugar de una cadena "hola"? Algo como esto:

function showContent(toPopulate) { 
     document.getElementById(toPopulate).innerHTML = "<a href='javascript:showOtherContent(*toPopulate*);'>show</a>" 
} 

function showOtherContent(toPopulate) {...} 

Entonces, ¿cómo enviar aPopular como una variable para mostrarOtherContent()?

Lo anterior se resuelve así:

document.getElementById(toPopulate).innerHTML = "<a href='javascript:showOtherContent(\"" + toPopulate + "\");'>show</a>" 
1

Intenté usar carácter de escape ("\"), pero aún no ha ayudar a

JavaScript es diferente de C#, sólo lo utilizan dos veces a la vez, ejemplo: alert('We are\\'t going to go')

Cuestiones relacionadas