ASP,VB,JAVASCRIPT 拼HTML时多层单引号双引号嵌套用法,实用

 

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(&quot;OK&quot;);" />
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。两个双引号的做法是 vbScript的,\"这种做法则是javascript的,而HTML的,则是用&quot;,此外还可以使用:"、&#x27。

下面列出各种表达方法:
<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转义字符&quot;(& q u o t ;)-OK" type="button" onclick="alert(&quot;OK&quot;);" /><br />
<input value="HTML转义字符&apos;(& a p o s ;)-IE错误" type="button" onclick="alert(&apos;OK&apos;);" /><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&" "),其实还就是前一空字符串连接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函数。如此,&的功能和+在做为字符串连接时的功能就一致了。建议是千万别贪图小便宜来。程序员必须严谨。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。