2010-01-08 4 views
7

Le code ci-dessus est le code javascript. Problème est l'impression bonjour ou toute autre chaîne. Si je tape juste 123 à la place de bonjour, ça donne alerte. Mais je ne suis pas capable d'utiliser une chaîne comme bonjour là-bas. Normalement une chaîne dans une fonction d'alerte est gardée entre guillemets '' mais le contenu entier est entre guillemets et j'ai déjà utilisé la guillemets simples au début de la fonction onclick. J'ai essayé d'utiliser le caractère Escape ("\") mais cela n'a pas aidé. Aucune suggestion?Javascript en html - Utilisation du guillemet simple dans un autre guillemet simple

+1

Pourquoi ne choisissez-vous pas la bonne réponse ici? – Kristopher

Répondre

14

Essayez ceci:

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

Vous aurez besoin d'utiliser les doubles guillemets et dans l'attribut onclick

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

Peu importe si vos citations externes sont simples ou doubles. Vous pouvez échapper un caractère dans une chaîne externe avec une barre oblique inverse ... \ 'devient' dans la chaîne elle-même. L'exemple de Darin ou de Masood fonctionnera. Mais Masood est ignorant en référence à un besoin d'utiliser des guillemets doubles comme l'enceinte extérieure.

8

Si vous utilisez apostrophes comme séparateur pour les attributs HTML, vous devez HTML encode les apostrophes que vous mettez à l'intérieur de l'attribut:

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

Je préfère utiliser l'apostrophe comme chaîne délimitée en Javascript et entre guillemets comme délimiteurs pour les attributs HTML. Ensuite, vous échapper juste les apostrophes que vous avez à l'intérieur de la chaîne Javascript:

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

Pour mettre une chaîne dans un Javascript, dans un attribut HTML, dans une chaîne en Javascript, vous:

  • évasion toute délimiteurs de chaîne dans la chaîne
  • HTML encode le code Javascript
  • d'échapper à toute délimiteurs de chaîne dans la chaîne HTML
+0

Ce ne sont pas des apostrophes: ce sont des guillemets simples. Les apostrophes sont le même caractère, mais servent une fonction grammaticale assez différente. – TRiG

+2

@TRiG: Oui, ce sont des apostrophes. Pour être précis, c'est une "apostrophe de machine à écrire". Un guillemet n'est pas du tout un caractère, c'est le texte que vous placez entre guillemets, donc pour être correct, vous devriez l'appeler "guillemet simple" qui est un peu lourd, et qui n'est pas vraiment correct car c'est un caractère différent. Les guillemets réels (simples, doubles et tous les autres) sont des caractères typographiques, et non ce qui est utilisé en Javascript. – Guffa

3

Vous avez JavaScript dans HTML en JavaScript. C'est naturellement déroutant. Mieux vaut éviter les problèmes chaîne-élingage de guillemets et les échappements (qui, a tort, peut facilement conduire à des failles de sécurité lorsque les données soumises par l'utilisateur est utilisé), et de le faire le chemin 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

si quelqu'un doit envoyer une variable au lieu d'une chaîne "bonjour"? Quelque chose comme ceci:

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

function showOtherContent(toPopulate) {...} 

alors comment envoyer toPopulate comme une variable à showOtherContent()?

ci-dessus est résolu comme ceci:

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

J'ai essayé d'utiliser le caractère Escape (le "\"), mais il n'a pas aidé

Javascript est différent de C#, vous utilisez juste deux fois à la fois, exemple: alert('We are\\'t going to go')

Questions connexes