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

上面的代码是我的javascript。问题是打印hello或任何其他字符串。如果我只是输入123代替你好,它确实会发出警报。但是我不能在这里使用像你好的字符串。通常,警报函数中的字符串保留在引号内,但整个内容位于双引号内,并且我已经在onclick函数的开头使用了单引号。我尝试使用Escape字符(“\”),但它没有帮助。有什么建议么?html中的Javascript - 在另一个单引号内使用单引号

+1

为什么不在这里选择正确的答案? – Kristopher 2014-05-22 18:12:52

回答

14

试试这个:

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

您将需要使用双引号和逃避它在onclick属性

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

不要紧,如果你的外引号是单或双。您可以使用反斜杠在外部字符串中转义字符...... \'变成'在字符串本身内。 Darin's或Masood的例子都可以工作。但马苏德并不知道需要使用双引号作为外部封闭。

8

如果使用单引号作为分隔符为HTML属性,你必须HTML编码你把属性中的撇号:

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

我更喜欢使用在Javascript分隔单引号时,字符串和引号作为分隔符为HTML属性。然后,你只是逃避,你有JavaScript字符串中的撇号:

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

把任何字符串一个Javascript里面,一个HTML属性中,在Javascript中的字符串里面,你这样做:

  • 逃生字符串
  • HTML编码的Javascript代码
  • 逃生任何字符串分隔符在HTML字符串任何字符串分隔符
+0

它们不是撇号:它们是单引号。撇号是相同的字符,但具有完全不同的语法功能。 – TRiG 2010-05-11 17:18:12

+2

@TRIG:是的,它们是撇号。具体来说,这是一个“打字机撇号”。一个引号根本不是一个字符,而是引号之间的文本,所以为了正确,你应该把它称为“单引号”,这有点麻烦,而且还不是真正正确,因为这是一个不同的字符。真正的引号(单,双和所有其他)是印刷字符,而不是Javascript中使用的。 – Guffa 2010-05-11 19:46:30

3

您在JavaScript内部的HTML内有JavaScript。这自然令人困惑。更好地避免引号和转义的字符串吊索问题(其中,有错误的,很容易导致安全漏洞,当使用用户提交的数据),并做到这一点的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

如果什么人需要发送一个变量而不是字符串“hello”?这样的事情:

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

function showOtherContent(toPopulate) {...} 

所以如何发送toPopulate作为showOtherContent()的变量?

上述解决这样的:

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

我尝试使用转义字符( “\”),但它并没有帮助

JavaScript是从C#不同,你只需要使用它例如:alert('We are\\'t going to go')