2013-04-21 64 views
146

更新: 我想給這個問題的更新的答案。首先,讓我說明如果您正試圖完成我在下面的任務,我建議您通過adding event listeners來管理事件。我強烈建議您將jQuery用於您的項目,並使用它們的語法對manage event listeners使用DOM。如何在JavaScript中轉義單引號(')?

問題

好吧,我基本上是這樣:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\'ex1\')' />"; 

我不想雙引號(「),我把\」我只想要一個單引號。所以我想不讓它投入使用時,我試圖在最終結果達到這個雙。

<img src="something" onmouseover="change('ex1')" /> 

逸出不是爲我工作。

我標記的答案正常,但是,更清潔(更專業的方式,國際海事組織)是loganfsmyth's answer

+0

http://stackoverflow.com/questions/8744315/single-quote-escape-in​​-javascript-function-parameters – gongzhitaao 2013-04-21 18:53:19

回答

150

你應該總是考慮哪些瀏覽器將在年底看到。在這種情況下,它會看到這一點:

<img src='something' onmouseover='change(' ex1')' /> 

換句話說,在「的onmouseover」屬性只是change(,並且還有另一個「屬性」,沒有所謂的價值ex1')'

事實是,HTML不使用\作爲轉義字符。但它確實分別將&quot;&apos;識別爲轉義引用和撇號。

有了這些知識,使用此:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(&quot;ex1&quot;)' />"; 

...話雖這麼說,你可以只使用JavaScript的報價:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\"ex1\")' />"; 
+17

...或者,更好的是,不要完全使用內聯的屬性處理程序;特別是通過javascript創建的元素。 – Bergi 2013-04-21 18:58:45

+1

試過。它仍然給我沒有定義,而不是給我的價值ex1 – Matthew 2013-04-21 19:01:16

+0

好的。我犯了一個用戶錯誤...放在了錯誤的地方。 – Matthew 2013-04-21 19:06:40

126

這裏的答案很簡單:

你已經包含了它在雙引號,所以沒有必要與\逃脫它。

如果你想逃避單引號字符串單引號:

var string = 'this isn\'t a double quoted string'; 
var string = "this isn\"t a single quoted string"; 
//   ^  ^same types, hence we need to escape it with a backslash 

,或者如果你想逃避\',你能逃脫bashslash到\\報價,報價以\'像這樣:

var string = 'this isn\\\'t a double quoted string'; 
//     vvvv 
//      \ ' (the escaped characters) 

但是,如果包含有不同的報價類型的字符串,你不需要逃避:

var string = 'this isn"t a double quoted string'; 
var string = "this isn't a single quoted string"; 
//   ^ ^different types, hence we don't need escaping 
+0

第三個選項像魅力一樣工作 – 2016-01-18 23:00:18

+0

Sir'' '' 這不行的,你能指出一個錯誤 ? – 2017-01-22 07:44:29

+0

@SurajJain首先,您不應該使用警報中的引號 - 您正在輸出文本值,其次您應該在腳本中轉義引號或更改它們的類型。 – h2ooooooo 2017-01-22 19:45:44

28

可以逃避在JavaScript中'\'

16

由於數值實際上是一個HTML屬性裏面,你應該使用&apos;

"<img src='something' onmouseover='change(&apos;ex1&apos;)' />"; 
+0

謝謝..我嘗試了一次,但我想我可能會把它放在最糟糕的位置。 – Matthew 2013-04-21 19:06:14

+0

這解決了我的問題。謝謝。 – 2014-02-28 05:50:26

4
document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />"; 

OR

document.getElementById("something").innerHTML = '<img src="something" onmouseover="change(\'ex1\')" />'; 

它應該工作...