一些ASP JS HTML零散技巧
成功志
一些ASP JS HTML零散技巧
2011-12-27 ok12

〓简介〓

字符意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。

例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线。或者:对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。


〓正文〓

字符

意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。

例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示

匹配一个单词的分界线。

或者:

对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。

例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。

为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。


字符^

意义:表示匹配的字符必须在最前边。

例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。


字符$

意义:与^类似,匹配最末的字符。

例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。


字符*

意义:匹配*前面的字符0次或n次。

例如:/bo*/匹配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat g

runted"中的任何字符。


字符+

意义:匹配+号前面的字符1次或n次。等价于{1,}。

例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。


字符?

意义:匹配?前面的字符0次或1次。

例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。


字符.

意义:(小数点)匹配除换行符外的所有单个的字符。

例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。




字符(x)

意义:匹配'x'并记录匹配的值。

例如:/(foo)/匹配和记录"foo bar."中的'foo'。匹配子串能被结果数组中的素[1], ..., [n] 返

回,或被RegExp对象的属性$1, ..., $9返回。


字符x|y

意义:匹配'x'或者'y'。

例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。


字符{n}

意义:这里的n是一个正整数。匹配前面的n个字符。

例如:/a{2}/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的两个

'a'。


字符{n,}

意义:这里的n是一个正整数。匹配至少n个前面的字符。

例如:/a{2,}不匹配"candy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a'


字符{n,m}

意义:这里的n和m都是正整数。匹配至少n个最多m个前面的字符。

例如:/a{1,3}/不匹配"cndy"中的任何字符,但匹配 "candy,"中的'a',"caandy," 中的前面两个

'a'和"caaaaaaandy"中前面的三个'a',注意:即使"caaaaaaandy" 中有很多个'a',但只匹配前面的三

个'a'即"aaa"。


字符[xyz]

意义:一字符列表,匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。

例如:[abcd]跟[a-c]一样。它们匹配"brisket"中的'b'和"ache"中的'c'。


字符[^xyz]

意义:一字符补集,也就是说,它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一

字符范围。

例如:[^abc]和[^a-c]等价,它们最早匹配"brisket"中的'r'和"chop."中的'h'。


字符[b]

意义:匹配一个空格(不要与b混淆)


字符b

意义:匹配一个单词的分界线,比如一个空格(不要与[b]混淆)

例如:/bnw/匹配"noonday"中的'no',/wyb/匹配"possibly yesterday."中的'ly'。


字符B

意义:匹配一个单词的非分界线

例如:/wBn/匹配"noonday"中的'on',/yBw/匹配"possibly yesterday."中的'ye'。


字符cX

意义:这里的X是一个控制字符。匹配一个字符串的控制字符。

例如:/cM/匹配一个字符串中的control-M。


字符d

意义:匹配一个数字,等价于[0-9]。

例如:/d/或/[0-9]/匹配"B2 is the suite number."中的'2'。


字符D

意义:匹配任何的非数字,等价于[^0-9]。

例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的'B'。


字符f

意义:匹配一个表单符


字符n

意义:匹配一个换行符


字符r

意义:匹配一个回车符


字符s

意义:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ fnrtv]。

例如:/sw*/匹配"foo bar."中的' bar'。


字符S

意义:匹配除white空格符以外的一个单个的字符,等价于[^ fnrtv]。

例如:/S/w*匹配"foo bar."中的'foo'。


字符t

意义:匹配一个制表符


字符v

意义:匹配一个顶头制表符


字符w

意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。

例如:/w/匹配"apple,"中的'a',"$5.28,"中的'5'和"3D."中的'3'。


字符W

意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。

例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的'%'。


字符n

意义:这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。


例如:/apple(,)sorange1/匹配"apple, orange, cherry, peach."中的'apple, orange',下面

有一个更加完整的例子。

注意:如果左圆括号中的数字比n指定的数字还小,则n取下一行的八进制escape作为描述。


字符ooctal和xhex

意义:这里的ooctal是一个八进制的escape值,而xhex是一个十六进制的escape值,允许在一个正则表达式中嵌入ASCII码。


 


 


详解如何在后台管理中进行批量操作(ASP+Script)




〓简介〓

我们常看到有些优秀的后台管理系统都是可以对信息批量操作的,比如点击一个复选框,全部选中(取消选中),然后一个确定按钮就可以全部删除(更新)那些信息了,其实这也不难,只是需要了一段小脚本……


〓正文〓

比如表单页面里全选的HTML语句是这样的


<input type="checkbox" name="chkAll" value="on" onClick="CheckAll(this.form)">《全部选中》


这里就定义了一个CheckAll函数, this.form 表示动作当前的表单里,


onClick的意思就是当鼠标按下放开执行这样一个点击动作后激活CheckAll函数


而这个CheckAll函数的源代码也很简单:

========================================================

<script>

function CheckAll(form){

for (var i=0;i<form.elements.length;i++){

var e = form.elements[i];

if (e.name != 'chkAll')

e.checked = form.chkAll.checked;

}

}

</script>

===================================================

里面仅仅是一个FOR(initallization; test; increment) 典型的JS循环语句


initallization 表示循环开始付值一次这里是 var i=0 由于JS语法是强制每个变


量必须声明后才能使用的,而声明JS变量的声明方式可以有两种一种是先声明,


换行后付值比如:


var i, a

i = 1

a = 0


而另一种则是在同一行同时声明并付值 比如 var i = 0 当然了,我这里用的是后者


(不行了,老娘喊我吃饭了,待会儿回来接着说……)


…………吃好了,可以接着说了, 下面这句是i<form.elements.length,理论上讲


form.elements.length是获取当前表单里总共有多少个复选框(checkbox)获取的值是个整数类型


与i作比较,如果i小于他,则执行循环语句里的内容,后面的 i++ 则表示条件成立后每循环一次


i的数值累加一,这样当i累加到大于form.elements.length取得的数值后退出循环!


值得注意的是form.elements.length所获得的复选框的个数是包括那个form表单里


《全部选中》的那个复选框的


<input type="checkbox" name="chkAll" value="on" onClick="CheckAll(this.form)">《全部选中》




所以接下来的语句 var e = form.elements[i]; 接着声明一个变量,记录循环到了哪个复选框


而全部选中的那个复选框名称为chkAll,所以我们对复选框名称(name)不为chkAll的


进行操作 if (e.name != 'chkAll')


!= 在JS中表示不等于,后面的语句 e.checked = form.chkAll.checked; 让所有的复选框的状态


都等于表单中chkAll的状态(checked表示选中),这里需要注意的是JS当中对变量命名的大小写


是敏感的(也就是区分大小写,所以chkAll和chkall脚本执行当中或把它解释成两个不同的名字)


至此批量操作脚本方面的语法就全部解释完了,下面是ASP方面要注意的


由于checkbox复选框获取的值是以数组的形式存在的比如我们一个名称为ID记录数据库内容ID自动编号




复选框,用 ID = Request.Form("ID") 取得的值直接不做处理显示出来会是以数组形式存在的,


ID = "3,22,32,66,6543" 那么在ASP语句里想以此为条件批量执行操作则必须把它们以单个数值的形式


提取出来,当然我们可以很简单地做到比如你在SQL查询语句里将等号(=)替换成(in)旁边再多加


两个括号就行了,比如原来的删除语句 sql = "delete id from table where id = " & id & ""


现在批量删除只要改成 sql = "delete id from table where id in (" & id & ")" 就OK了!


可是如果我们是要用ID这个数组里的每个数值为条件去查询数据库相关内容 用 where in


就不太好操作了,我们这时候需要将ID这个数组以循环形式单独提取出来,


一一进行操作,那么我们还需要


多用到一个变量(IDD),一个VBS内置函数(Split)和一个循环语句(For Each …… Next)


当然变量IDD是我们自己取的名字,您可以根据喜好自己定义,函数Split的作用是返回指定字符串的一维数组


For Each …… Next的作用是依据指定的数字重复循环执行一次,当我们用ID = Request.Form("ID")


获得一个数组的时候 紧接下面 IDD = Split(ID,",") 或者这个字符串的一维数组


接着


For ID Each in IDD


执行你的代码, 而这期间代码的条件 你就可以用等号了 where id = " & id & ""


Next




这样的代码本来就是万无一失的,可是我还是遇到了一个让我头疼半天的问题,还在已经找到原因解决了


下面我告诉你吧免得以后碰到就不会不知所措了……


Request.Form("ID") 获得的字符串"2,33,454,3222" 本来中间的逗号分隔符,都应该是英文半角的这样Split才能


辨认,而我有次获取出来的居然都是用中文半角逗号的分隔符"2,24,55,342,322",每次在调试的时候都告诉我说


数据溢出,搞不懂,后来我用VBS的Replace函数作了一下替换就OK了,就是在 ID = Request.Form("ID") 的下面


加一句 ID = Replace(ID,",",",") 将ID字符串里的中文逗号全部替换成英文半角的,呵呵,也怪我懒


没有追根溯源看看到底为什么会全变成中文半角的逗号!如果哪位高手知道的话请告知小弟,在下感激不尽!


 


客户端脚本,值得收藏!




〓简介〓

屏闭右键,防止别人Frame,不准粘帖,不准复制,IE限制自己的图标,网页另存,查看网页代码,等等!


〓正文〓

1. oncontextmenu="window.event.returnvalue=false"      将彻底屏蔽鼠标右键

    <table border oncontextmenu=return(false)><td>no</table>   可用于Table


2. <body onselectstart="return false">                 取消选取、防止复制


3. onpaste="return false"                                        不准粘贴


4. oncopy="return false;" oncut="return false;"                  防止复制


5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标


6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标


7. <input style="ime-mode:disabled">                           关闭输入法


8. 永远都会带着框架

<script language="javascript"><!--

if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页

// --></script>


9. 防止被人frame

<SCRIPT LANGUAGE=javascript><!--  

if (top.location != self.location)top.location=self.location;

// --></SCRIPT>


10. <noscript>< src=*.html></></noscript>     网页将不能被另存为


11. <input type=button value=查看网页源代码  

onclick="window.location = 'view-source:'+ ' http://www.TOL8.com/&#39;">


12. 怎样通过asp的手段来检查来访者是否用了代理

<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then

response.write "<font color=#FF0000>您通过了代理服务器,"& _

"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")

end if

%>


13. 取得控件的绝对位置


//javascript

<script language="javascript">

function getIE(e){

var t=e.offsetTop;

var l=e.offsetLeft;

while(e=e.offsetParent){

    t+=e.offsetTop;

    l+=e.offsetLeft;

    }

alert("top="+t+"\nleft="+l);

}

</script>


//VBScript

<script language="VBScript"><!--

function getIE()

dim t,l,a,b

set a=document.all.img1

t=document.all.img1.offsetTop

l=document.all.img1.offsetLeft

while a.tagName<>"BODY"

    set a = a.offsetParent

    t=t+a.offsetTop

    l=l+a.offsetLeft

wend

msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"

end function

--></script>


14. 光标是停在文本框文字的最后

<script language="javascript">

function cc()

{

var e = event.srcElement;

var r =e.createTextRange();

r.moveStart('character',e.value.length);

r.collapse(true);

r.select();

}

</script>

<input type=text name=text1 value="123" onfocus="cc()">


15. 判断上一页的来源

asp:

request.servervariables("HTTP_REFERER")


javascript:

document.referrer


16. 最小化、最大化、关闭窗口

<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">  

<param name="Command" value="Minimize"></object>

<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">  

<param name="Command" value="Maximize"></object>

<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">

<PARAM NAME="Command" value="Close"></OBJECT>


<input type=button value=最小化 onclick=hh1.Click()>

<input type=button value=最大化 onclick=hh2.Click()>

<input type=button value=关闭 onclick=hh3.Click()>

本例适用于IE


17.  

<%

'定义数据库连接的一些常量

Const adOpenForwardOnly     = 0 '游标只向前浏览记录,不支持分页、Recordset、BookMark

Const adOpenKeyset          = 1 '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark

Const adOpenDynamic         = 2 '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。

Const adOpenStatic          = 3 '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动


Const adLockReadOnly        = 1 '锁定类型,默认的,只读,不能作任何修改

Const adLockPessimistic     = 2 '当编辑时立即锁定记录,最安全的方式

Const adLockOptimistic      = 3 '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等

Const adLockBatchOptimistic = 4 '当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的


Const adCmdText = &H0001

Const adCmdTable = &H0002

%>


18. 网页不会被缓存

HTM网页

<META HTTP-EQUIV="pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">

<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

或者<META HTTP-EQUIV="expires" CONTENT="0">

ASP网页

Response.Expires = -1

Response.ExpiresAbsolute = Now() - 1

Response.cachecontrol = "no-cache"

PHP网页

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");




19. 检查一段字符串是否全由数字组成

<script language="javascript"><!--

function checkNum(str){return str.match(/\D/)==null}

alert(checkNum("1232142141"))

alert(checkNum("123214214a1"))

// --></script>


20. 获得一个窗口的大小

document.body.clientWidth,document.body.clientHeight


21. 怎么判断是否是字符

if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");

else alert("全是字符");


22.TEXTAREA自适应文字行数的多少

<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">

</textarea>


23. 日期减去天数等于第二个日期

<script language=javascript>

function cc(dd,dadd)

{

//可以加上错误处理

var a = new Date(dd)

a = a.valueOf()

a = a - dadd * 24 * 60 * 60 * 1000

a = new Date(a)

alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")

}

cc("12/23/2002",2)

</script>


24. 选择了哪一个Radio

<HTML><script language="vbscript">

function checkme()

for each ob in radio1

    if ob.checked then window.alert ob.value

next

end function

</script><BODY>

<INPUT name="radio1" type="radio" value="style" checked>Style

<INPUT name="radio1" type="radio" value="barcode">Barcode

<INPUT type="button" value="check" onclick="checkme()">

</BODY></HTML>


25.获得本页url的request.servervariables("")集合

Response.Write "<TABLE border=1><!-- Table Header --><TR><TD><B>Variables</B></TD><TD><B>value</B></TD></TR>"

for each ob in Request.ServerVariables

Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"

next

Response.Write "</TABLE>"


26.

本机ip<%=request.servervariables("remote_addr")%>

服务器名<%=Request.ServerVariables("SERVER_NAME")%>

服务器IP<%=Request.ServerVariables("LOCAL_ADDR")%>

服务器端口<%=Request.ServerVariables("SERVER_PORT")%>

服务器时间<%=now%>

IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>

脚本超时时间<%=Server.ScriptTimeout%>

本文件路径<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>

服务器CPU数量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>

服务器解译引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>

服务器操作系统<%=Request.ServerVariables("OS")%>


27.ENTER键可以让光标移到下一个输入框

<input onkeydown="if(event.keyCode==13)event.keyCode=9">


28. 检测某个网站的链接速度:

把如下代码加入<body>区域中:

<script language=javascript>

tim=1

setInterval("tim++",100)

b=1


var autourl=new Array()

autourl[1]=" www.njcatv.net"

autourl[2]="javacool.3322.net"

autourl[3]=" www.sina.com.cn"

autourl[4]="www.nuaa.edu.cn"

autourl[5]=" www.cctv.com"


function butt(){

document.write("<form name=autof>")

for(var i=1;i<autourl.length;i++)

document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br/>")

document.write("<input type=submit value=刷新></form>")

}

butt()

function auto(url){

document.forms[0]["url"+b].value=url

if(tim>200)

{document.forms[0]["txt"+b].value="链接超时"}

else

{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}

b++

}

function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto(' http://";;+autourl[i]+"')>")}

run()</script>


29. 各种样式的光标

auto          :标准光标

default       :标准箭头

hand          :手形光标

wait          :等待光标

text          :I形光标

vertical-text :水平I形光标

no-drop       :不可拖动光标

not-allowed   :无效光标

help          :?帮助光标

all-scroll    :三角方向标

move          :移动标

crosshair     :十字标

e-resize

n-resize

nw-resize

w-resize

s-resize

se-resize

sw-resize

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容