標籤:
s、html中的單引號、雙引號及其轉義使用(轉) 收藏
在js中對相關字元做判斷或取值,或者拼HTML賦值的時候很多情況下都會用到這些,也是我剛剛遇到的問題,通過參考下面的這篇文章,一切都解決了,摘抄下來做個筆記!呵呵...
------
在一個網頁中的按鈕,寫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>
1,雙引號"" ASP中處在雙引號中的可以是任意的字元、字串,HTML代碼。 比如 <%response.write ("cnbruce here")%><hr> <%response.write ("<b>cnbruce here</b>")%> 產生的頁面效果分別是:預設文字和加粗文字“cnbruce here” 下面再想想,如果我要在輸出的頁面文字上加一顏色效果該怎麼辦? 1,一般文字顏色這樣寫:<font color="#0000ff">cnbruce</font> 2,response.write寫法是這樣的:response.write("輸入顯示的內容") 3,如果要將上面超連結代碼放到response.write中,有沒有發現write方法中 的雙引號和color中的雙引號形成嵌套效果, 勢必形成response.write("<font color="#0000ff">cnbruce</font>") 4,調試結果不容樂觀,因為color的前引號和write的前引號形成匹配,內容 為<font color=;同樣color的後引號也就和write的後引號匹配了,內容為: >cnbruce</font>。最終結果是:中間的 #0000ff 被孤單了。 5,所以為了結果正確,你可以將 #0000ff 當成字串放在雙引號裡面,然後該字 符串與前字串<font color=和後字串>cnbruce</font>中間的串連就採用&號 最後結果如下: <% response.write("<font color=" & "#0000ff" & ">cnbruce</font>") %> 2,單引號‘‘ 正如學習語文課一樣,繼續放在雙引號中的引號可以採用單引號。 那麼上面一條語句response.write("<font color="#0000ff">cnbruce</font>")中的 #0000ff就可以將其雙引號變為單引號: response.write("<font color=‘#0000ff‘>cnbruce</font>"), 這樣執行同樣正確。 3,串連字元&號 ASP中&號的主要作用是用來串連的,包括:字串-字串、字串-變數、變數-變數等混合串連。 比如下面一例題: <% mycolor="#0000ff" response.write ("<font color=‘ "&mycolor&" ‘>" & "cnbruce" & "</font>") %> 其中極需要注意的是:color的單引號中又採用了雙引號~!你也許會糊了,慢慢看。 1,現在是自己定義了一個變數mycolor,按照原則,變數放在response.write裡面是不 需要加雙引號的,因為加了雙引就表示是字串,而非變數啊。 2,所以response.write如果要輸出變數可以直接這樣寫:response.write(mycolor) 3,但是,現在。我們的變數一定要是放在雙引號中的(比如上面程式是放在單引中), 那具體的response.write又該如何書寫呢? 4,關鍵寫法:將ASP中的變數繼續添加左右的"&包括,就可以放到response.write的引號中了,效果即為:response.write(" "&mycolor&" ") 5,分析response.write(" "&mycolor&" "),其實還就是前一Null 字元串聯接mycolor變數再串連後一字串嘛。 6,所以,現在對於上方的ASP整個例題應該有所領悟了吧。 繼續強化加深 <% mycolor="#0000ff" response.write ("<font color=‘ "&mycolor&" ‘>" & mycolor & "</font>") %> 這個裡面就包含了字串,變數以及變數在引號中的使用。相信你也就能夠明白了吧。 最後,你還可以進行HTML和ASP的混合使用。 <%mycolor="#0000ff"%> <font color=<%=mycolor%>><%=mycolor%></td> 有很重要的一點還是沒有講,雙引號的轉義問題。 vbscript中如果需要在字串裡使用雙引號,需要轉義,就如同javascript,c等語言中的轉義意思一樣 在vbscript中,雙引號的轉義方法是書寫兩個雙引號,即"",比如 Response.write "I say ""you are so clever!""" 輸出的結果就是:I say "you are so clever!" 使用轉義的目的有兩個: 1、當然是需要用到雙引號的地方必須用雙引號 2、不建議輸出html代碼時,屬性值部分不加引號或者只加單引號(為什嗎?因為W3C的標準是必須加雙引號的) 也即如此 Response.write "<a href="""+rs("link")+""" target=""_blank"">"+rs("title")+"</a>" 紅色引號部分為雙引號轉義輸出,藍色引號部分是字串定義邊界 或許你會覺得這樣寫不利於閱讀,但習慣就好,而且最好就習慣這樣寫 另外建議&號用要用的謹慎,因為&號在做串連時,可以把數字類型和邏輯類型自動轉換成字串類型,即 b=true n=1 s="abcd" Response.Write s&n&b 輸出結果時 abcd1True 這樣並不好,養成這樣的壞習慣後,在操作sql語句,有時會出現令你頭疼的無法預料的錯誤,所以,如果要使用&號做為串連,必須顯式的把數字類型和布爾類型轉換成字元類型,即用Cstr函數。如此,&的功能和+在做為字串串連時的功能就一致了。建議是千萬別貪圖小便宜來。程式員必須嚴謹。
ASP,VB,JAVASCRIPT 拼HTML時多層單引號雙引號嵌套用法,實用(轉載)