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

Der obige Code ist mein Javascript. Problem ist, Hallo oder eine andere Zeichenfolge zu drucken. Wenn ich nur 123 anstelle von Hallo tippe, gibt es Alarm. Aber ich kann dort keine Zeichenfolge wie Hallo verwenden. Normalerweise wird ein String in einer Alert-Funktion in Anführungszeichen eingeschlossen, aber der gesamte Inhalt ist in Anführungszeichen gesetzt, und ich habe bereits ein einfaches Anführungszeichen am Anfang der onclick-Funktion verwendet. Ich habe versucht, Escape-Zeichen ("\") zu verwenden, aber es hat nicht geholfen. Irgendwelche Vorschläge?Javascript in html - Verwenden von einfachen Zitat in einem anderen einfachen Zitat

+1

Warum wählen Sie hier keine richtige Antwort? – Kristopher

Antwort

14

Versuchen Sie folgendes:

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

Sie die doppelten Anführungszeichen verwenden müssen und die Flucht in das OnClick Attribut

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

Es spielt keine Rolle, ob Ihre äußere Anführungszeichen einfach oder doppelt sind. Sie können ein Zeichen innerhalb einer äußeren Zeichenkette mit einem umgekehrten Schrägstrich ... \ 'werden' innerhalb der Zeichenkette selbst umgehen. Entweder Diesins oder Masoods Beispiel wird funktionieren. Aber Masood ist ignorant in Bezug auf die Notwendigkeit, doppelte Anführungszeichen als das äußere Gehäuse zu verwenden.

8

Wenn Sie Apostrophe als Trennzeichen für die HTML-Attribute verwenden, müssen Sie HTML kodieren die Apostrophe, die Sie in das Attribut setzen:

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

ziehe ich Apostrophe als String begrenzt in Javascript und Anführungszeichen als Trennzeichen verwenden für HTML-Attribute. Dann einfach Sie die Apostrophe entkommen, die Sie in der Javascript-String haben:

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

in einer Javascript beliebige Zeichenfolge zu setzen, innerhalb eines HTML-Attribut innerhalb einer Zeichenfolge in Javascript, tun Sie:

  • Flucht Eine beliebige Zeichenfolge Trennzeichen in der Zeichenfolge
  • HTML codieren die Javascript-Code
  • Flucht beliebige Zeichenfolge Trennzeichen in der HTML-String
+0

Sie sind keine Apostrophe: Sie sind einfache Anführungszeichen. Apostrophe sind das gleiche Zeichen, dienen aber einer ganz anderen grammatischen Funktion. – TRiG

+2

@TRiG: Ja, sie sind Apostrophe. Um genau zu sein, es ist ein "Schreibmaschinen-Apostroph". Ein Zitat ist überhaupt kein Zeichen, es ist der Text, den Sie zwischen Anführungszeichen setzen. Um richtig zu sein, sollten Sie es "einfaches Anführungszeichen" nennen, was ein wenig umständlich und immer noch nicht richtig ist, da es ein anderes Zeichen ist. Die echten Anführungszeichen (einfach, doppelt und alle anderen) sind typografische Zeichen und nicht das, was in Javascript verwendet wird. – Guffa

3

Sie haben JavaScript in HTML innerhalb von JavaScript. Das ist natürlich verwirrend. Besser die schnur slinging Probleme zu vermeiden, zu zitieren und zu entkommen (was falsch verstanden, kann leicht zu Sicherheitslücken führen, wenn Benutzer übermittelten Daten verwendet wird), und tun es die DOM-Weg:

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

was, wenn jemand muss eine Variable anstelle einer Zeichenfolge "Hallo" senden? Etwas wie dieses:

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

function showOtherContent(toPopulate) {...} 

so wie toPopulate als eine Variable an showOtherContent() zu senden?

Die obige wie folgt gelöst:

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

ich versucht, mit Escape-Zeichen ("\"), aber es hat nicht

Javascript Hilfe von C# unterscheidet, können Sie es einfach zu verwenden, zweimal hintereinander Beispiel: alert('We are\\'t going to go')