在一個網頁中的按鈕,寫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的。兩個雙引號的做法是vbScript的,\"這種做法則是javascript的,而HTML的,則是用",此外還可以使用:"、'。
下面列出各種表達方法:
<html>
<body>
<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="兩個單引號-錯誤" 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');" /><br />
<input value="外單引號內雙引號-OK" type="button" onclick='alert("OK");' /><br />
<input value="外部不使用引號-OK" type="button" onclick=alert('OK');alert("OK"); /><br />
<input value="HTML逸出字元"(& # 3 4 ;)-OK" type="button" onclick="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 u o t ;)-OK" type="button" onclick="alert("OK");" /><br />
<input value="HTML逸出字元'(& a p o s ;)-IE錯誤" type="button" onclick="alert('OK');" /><br />
<input value="其它\\-錯誤" type="button" onclick="alert(\\"OK\\");" /><br />
<input value="其它\& # 3 4 ;-錯誤" type="button" onclick="alert(\"OK\");" /><br />
</body>
</html>