html、JavaScript、JSON中單雙引號使用及巢狀
HTML與JS
一般 HTML 習慣是屬性都用雙引號。那麼當遇到 js 和 php 裡要用 HTML string 的時候,就是這樣:// js
var str = '<div class="zu-global-notify" id="zh-global-message">';
在一個網頁中的按鈕,寫onclick事件的處理程式碼,不小心寫成如下:
<input value="Test" type="button" onclick="alert(""OK"");" />
IE提示出錯後,再漫不經心地改為:
<input value="Test" type="button" onclick="alert(\"OK\");" />
結果還是出錯。
這時,我就想不通了,雖然我知道最直接的解決方法是寫成這樣:<input value="" type="button" onclick="alert('OK');" />
但為什麼javascript中的轉義字元\沒有效果了呢?
後來找到一段正常的程式碼:
<input value="Test" type="button" onclick="alert("OK");" />
這時才理解,是歸於HTML的管轄範圍,所以轉義字元應該使用HTML的,而不是javascript的。
\"這種做法則是javascript的。而HTML的,則是用",此外還可以使用:"、'。
下面列出各種表達方法:(摘自點選開啟連結)
<html>
<body>
<input value="外雙引號內雙引號-錯誤"type="button"onclick="alert("OK");" /><br /><inputvalue="\+雙引號-錯誤" type="button"onclick="alert(\"OK\");" /><br /><inputvalue="其它\\-錯誤" type="button"onclick="alert(\\"OK\\");" /><br /><inputvalue="
<input value="外雙引號內單引號-OK" type="button"onclick="alert('OK');" /><br />
<input value="外單引號內單引號-錯誤" type="button"onclick='alert('OK');' /><br />
<input value="外單引號內雙引號-OK" type="button"onclick='alert("OK");' /><br />
<input value="\+單引號-錯誤" type="button"onclick="alert(\'OK\');" /><br />
<input value="兩個雙引號-錯誤" type="button"onclick="alert(""OK"");" /><br />
<input value="兩個單引號-錯誤" type="button"onclick="alert(''OK'');" /><br />
<input value="外部不使用引號-OK" type="button"onclick=alert('OK');alert("OK"); /><br />
<input value="HTML轉義字元'(& # 3 9;)-OK" type="button" onclick="alert('OK');"/><br />
<input value="HTML轉義字元"(& # x 2 2;)-OK" type="button" onclick="alert('OK');"/><br />
<input value="HTML轉義字元'(& # x 2 7;)-OK" type="button" onclick="alert('OK');"/><br />
<input value="HTML轉義字元"(& q uo t ;)-OK" type="button"onclick="alert("OK");" /><br />
<input value="HTML轉義字元'(& a po s ;)-IE錯誤"type="button" onclick="alert('OK');" /><br/>
</body>
</html>
JSON
JSON中的鍵值對,JSON需要遵循的兩個原則:(因為很多語言只能解析雙引號的格式,為了介面通用性,必須使用雙引號來包圍key和value)
- 字串必須使用雙引號,字串字面量如'str'是無效的。
- 屬性鍵也必須使用雙引號。
>JSON.parse("'String'")
SyntaxError:Unexpected token ILLEGAL
>JSON.parse('"String"')
'String'
>JSON.parse('{"hello":123,"world":456}')
{hello:123,world:456}
>JSON.parse('{"hello":"123","world":"456"}')
{hello:"123",world:"456"}