8
votes

JavaScript en HTML - en utilisant une citation unique à l'intérieur d'un autre citation unique

document.getElementById("img").innerHTML="< img src='/sitepath/"+imgg+".jpg' width='72' height='44' onclick='alert('hello');' />";
The above code is my javascript. Problem is printing hello or any other string. If I just type 123 in place of hello, it does give alert. But am not able to use a string like hello there. Normally a string in an alert function is kept inside quotes ' ' but the entire content is inside double quotes and I have already used single quote at the beginning of onclick function. I tried using Escape character ("\") but it didnt help. Any suggestions?

1 commentaires

Pourquoi ne choisissez-vous pas une réponse correcte ici?


7 Réponses :


15
votes

Essayez ceci:

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


0 commentaires

0
votes

Vous devrez utiliser les citations doubles et l'échapper à l'attribut OnClick

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


0 commentaires

0
votes

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


0 commentaires

8
votes

Si vous utilisez des apostrophes comme délimiteur pour les attributs HTML, vous devez encoder HTMLCODE les apostrophes que vous placez à l'intérieur de l'attribut: xxx

i préférez utiliser des apostrophes sous forme de chaîne délimitée dans JavaScript et citation marque comme délimiteurs pour les attributs HTML. Ensuite, vous venez d'échapper aux apostrophes que vous avez à l'intérieur de la chaîne JavaScript: xxx

Pour mettre n'importe quelle chaîne dans un attribut JavaScript, à l'intérieur d'un attribut HTML, à l'intérieur d'une chaîne de javascript, vous faites :

  • Échappez à tous les délimiteurs de chaîne dans la chaîne
  • HTML Encode le code JavaScript
  • Échappez à tous les délimiteurs de chaîne dans la chaîne HTML

2 commentaires

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


@Trig: Oui, ce sont des apostrophes. Pour être précis, c'est une "apostrophe de machine à écrire". Une citation n'est pas du tout un personnage, c'est le texte que vous avez mis entre les guillemets, afin d'être correct, vous devez l'appeler "guillemande unique" qui est un peu encombrant, et toujours 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é dans JavaScript.



3
votes

Vous avez JavaScript à l'intérieur de HTML à l'intérieur JavaScript. C'est naturellement déroutant. Mieux vaut éviter les problèmes de citer des cordes de citer et de s'échapper (qui, ce qui s'est trompé, peut facilement conduire à des trous de sécurité lorsque des données soumises par l'utilisateur sont utilisées) et le font la manière 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 commentaires

0
votes

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

alors comment envoyer topopulé sous forme de variable à la mode showotherContent ()? P>

Ce qui précède est résolu comme ceci: P>

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


0 commentaires

1
votes

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

JavaScript est différent de C #, vous venez de l'utiliser deux fois à la fois, exemple: alerte ('Nous ne sommes pas \' t aller aller ')


0 commentaires