2010-01-08 58 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')