??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
最q网上流传着一U将当前面中的囄位置q行变换的代码,感觉比较好玩Q就想简单了(jin)解一下,大家如果感兴可以一h讨,呵呵?br />注:(x)|上_脓(chung)的代码是整个都未换行的,Z(jin)看着方便Q我做了(jin)
格式处理Q不q经q处理后的粘到地址栏里可能昄效果有问?br />Q最后我?x)给出网上流传的格式?br />//首先声明是javascript脚本
//然后定义各个变量Q注意在下面的用中除R变量一直变化外Q其它都是固定不变的
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6;
y3=.24; x4=300; y4=200; x5=300; y5=200;
//获取当前面所有的囄元素
DI=document.images;
//获取囄元素个数
DIL=DI.length;
//定义函数Q功能是循环获取每个囄元素样式Q将囄位置q行改变
function A(){
//注意q里的i-DIL,{同于i-DIL<0,如果起初i-DIL>0的话Q这里就{同于i-DIL>0,|上找资料未果,pqƈ验证?jin)一下,如果谁知道的话可以和弟说一?/font>
for(i=0; i-DIL; i++){
//Ҏ(gu)下标获取每个囄元素样式
DIS=DI
//图片对象从文中拖出Q然后用下面的left、top对图片元素进行绝对定?/font>
DIS.position='absolute';
//定位囑Ş距离屏幕左边的距?br />//每个囄昄位置的不同,是通过函数中的i控制?br />//每次A()函数执行完成后,再次执行Ӟ囄?x)换位置是通过R
的变换来控制?br />//囄只所以@环在固定的几个位|上是根据Math.sin和Math.cos和x1,x2,x3,y1,y2,y3来计的Q如果想?jin)解更详l可以进一步熟(zhn)这两个函数
DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;
//定位囑Ş距离屏幕双的距?/font>
DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5
}
R++
}
//定义执行A()函数的间隔时_(d)单位为毫U,下面?毫秒执行一?/font>
setInterval('A()',5);
//下面的void(0)Z(jin)佉K面不跌{,如果去除Q则会(x)Ҏ(gu)上面的代码内容,转向一个新的页?/font>
void(0);
|上传的最初代?如果没有试过的可以看下效果哈Q只要找一个含有图片的地址Q将下面代码拯到地址栏,回RO(jin)K?jin)?x)
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length;function A(){ for(i=0; i-DIL; i++){ DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5 } R++ } setInterval('A()',5);void(0);
]]>
为实现抱负而努力,为实现梦惌奋斗!
]]>
培养兴趣
把程序设计当成兴可以让你学得更快乐Q学?fn)效果自然?x)更好。在我到一个单位面试时Q主看?jin)我的历之后问我?x)「你怎么有这么多旉学会(x)q么多东ѝ做q么多事Q?/span>
我的回答是:(x)「把工作、学?fn)、和׃l合在一P旉׃(x)是别人的三倍。?/span>
我承认我很幸q,可以把程序设计当作赚q工作Q学?fn)的题材Q以?qing)茶余饭后的休闲zd。不是每个h都像我这般幸q,但是我相信至大安可以把它当成兴趣。相信我Q?/span>
调整你的?j)境Q把它当成是兴趣Q而非苦差事,你非发现你的「程序功力」与日俱增?/span>
慎选程序语a
慎选程序语a很重要,一开始就学太隄E序语言很容易让你遭遇到挫折而放弃。你可以挑比较容易且有趣的语a下手Q徏议?zhn)可以从下面的语言中择一Q?/span>
VB
Q简单,好用Q书c多?/span>
Java
Q比
VB
E难Q比
C/C++
单,书籍多,用途非常广Q相当有前途。可以当作学?/span>
C++
的蟩ѝ?/span>
Python
Q简单,好用Q各个^台都支持Q包?/span>
Windows
Q?/span>
Linux
Q?/span>
MacOS
Q?/span>
BeOS
Q?/span>
...
Q。国外很U,国内较少人用。原文书不少Q?/span>
但中文书目前只有一本(Ƨ莱C出版)(j)。我预期
Python
?x)是下一个热门的E序语言?/span>
q三个语a只是我给各位的徏议,你也可以多听听别人的意见。在选定一个程序语a之后Q就要执着Q不可以很快攑ּQ又改学另一个程序语aQ否则永q都只懂皮毛。有句谚语是
q么说的Q?/span>
A jack of all trades is master of none
」。如果你L(fng)?/span>
C++
?/span>
Java
?/span>
?/span>
{十U程序语aQ只不过每种E序语言都停留在
Say Hello
的阶D,怿面谈ȝ很快׃(x)
对你
Say Goodbye
?/span>
当你学精某程序语aQ然后想再学另一个程序语aQ你?x)发现有了(jin)前一个程序语a札实的根基,学Q何新的程序语a都很快?/span>
E序与香鸡排片段
在台湄软g公司内部Q有许多非科班出w的E序员,他们的薪资低廉,通常又很努力。Y件公司就聘C(jin)q种便宜又努力的E序员,也不要太高兴Q因L(fng)E序员,通常都只是把目前的公司当一个学?fn)的q渡阶段Q等到学得差不多Q拍拍屁股就Ch?jin),才没打算一辈子接受q样的低薪。但可?zhn)的是Q大部分的公叔R没有良好的程序员生(dng)规划制度Q反正大家互相利用。所以这些程序员很可能在做计ȝq程中,学不C西又得w心(j)q?/span>
所以,何苦来哉Q不如我们通通去卖香鸡排吧!但是你们只能到通化街夜?jng)和士林夜?jng)卖,不可以到我属意的饶河街夜?jng)和我抢生意Q我打听q,饶河街的摊位U金是三者中最便宜的)(j)。我的摊位名U要取做什么呢Q?/span>
...
嗯!叫?/span>
“Java
鸡排
?/span>
好了(jin)Q以U念我曾有过?/span>
Java
E序员n份。我打算把鸡排分成三U大,最大到最分别叫?/span>
J2EE
?/span>
J2SE
以及(qing)
J2ME
。哪天你到饶沌夜市(jng)Q发C(jin)一个乾乄瘦、看h营养不良的少q头家用著生的台语在吆喝著Q?/span>
?/span>
来呦Q来呦!好呷的香鸡排Q?/span>
J2EE
一?/span>
50
Q?/span>
J2SE
一?/span>
40
Q?/span>
J2ME
一?/span>
30......?/span>
请你也来光顾一下吧Q?/span>
...
看在
Java
的䆾上?/span>
关于职业生(dng)
生(dng)规划?x)随着q纪增长和生zȝ验的累积Q以?qing)h生观的改变而有阶段性的差异Q所以生涯规划不宜过于长期。生涯规划应该以渐进的、多L(fng)方式来进行。渐q的Q才不会(x)好高鹜远Q多L(fng)Q才可以分散风险。而且Q生涯规划要?qing)早Q因为有充分的旉准备Q越有可能实现。即使你xz地背着吉他到异乡旅行弹唱,你也得好好地l吉他吧Q?/span>
把握旉朝着你所规划的生涯迈q!旉q得很快的,费不得。你不会(x)希望有一天你在床上醒来,睁开眼后盯着天花板,你发C已经五十岁了(jin)Q昨晚五十大?/span> birthday party 的宿醉得你现在头痛Ʋ裂。你发现q些q来你依旧是浑噩噩的度q,生(dng)规划依旧只是「规划」,没一个实现。你在床上抱头痛哭,在你五十岁生日当天?/span>
信息应用领域变动快速,许多软g人员?gu)Ơ缺判断能力Q不能及(qing)早学?fn)妥相关的技术以为因应。特别是在这几年的光景,许多新应用领域的HvQ相当程度地撼动?jin)原有的软g怸Q以往那些唯唯、以微Y技术马首是ȝ人难得压错了(jin)宝,q次也算是让他们学到?jin)教训,q何不是一U领(zhn)。啊Q多么痛的领(zhn),你(微YQ曾是我的全部?/span>
许多软g人员~Z自我学习(fn)的能力。Y件h员应该问问自己:(x)q半q来技术能力精q了(jin)多少Q技术飞快地在进步,如果你没跟着q步Q在相对坐标看来是退步。我以前很变态,只要一天没看技术书c就?x)觉得今天真是白zM(jin)Q然后有一股冲动想要「做M」;现在我虽然比较没q么D自己?jin),但看书还是看得很勤快?/span>
软g人才培养不易Q折损率高。一些我认识的优U软g人才Q最q常 forward 一些「过x」、「h生的意义」之cȝ文章l我Q显CZ(jin)他们工作上的厌倦感。他们在?sh)话中告诉我Q他们忙得没旉接触新技术,技术已l跟不上别h?jin)。这厢大叹h才难寻,那厢努力折损人才?/span>
关于知识的等U?/span>
专业知识是一U无形的资Q不Ҏ(gu)评估其h(hun)倹{但是大致上Q专业知识可以分成四个层ơ,价值由低而高分述如下?/span>
Know-What
受过训练Q通过认证Q而精通某领域的基本知识,q类的知识就UCؓ(f) know-what Q也UCؓ(f)认知性的知识Q?/span> cognitive knowledge Q?/span> know-what 是一切知识的根基Q但是有?/span> know-what Qƈ不表C有能力可以zȝq些知识。许多Y件h员在通过专业认证之后Q就开始学?x)狮子大开口了(jin)Q其实他们的知识可能q停留在 know-what 的阶D,?/span> know-what 阶段的知识对公司来说是没有太多生产力的。此阶段的Y件h员应该努力地提升自己Q以q入下一个阶D,也就?/span> know-how ?/span>
Know-How
know-how 阶段的知识也UCؓ(f)q阶技能( advanced skills Q,指的是可以活用书本上学来的知识、理论,以解军_际的问题?/span> know-what 的知识或许可以透过「填鸭」方式生地吞下去,但是 know-how 的培M定要透过实务l验的篏U与体会(x)。如果有一个好老师?/span> leader 的引| know-what 可以很快地提升成 know-how Q靠自我的培d通常?x)比较辛苦。不q,当我要引导学生由 know-what ?/span> know-how Ӟ往往?x)有许多「不识货」的学生嫌我啰唆?/span>
Know-Why
know-why 阶段的知识指的是Ҏ(gu)个系l的掌握度( system understanding Q,也就是了(jin)解各U知识背后复杂交错的因果关系。有?/span> know-why 的知识,软g人员除了(jin)能顺利地q行软g计划之外Q还能进一步解x大、更复杂的问题,因ؓ(f)一切的知识都是有条理的。具?/span> know-why 的Y件h员对整个计划h强烈的「第六感」,可以直觉地做出正的判断Q预先知道可能会(x)遇到的问题。计划的 leader 必须具备 know-why Q才能全盘掌握计划?/span>
Care-Why
care-why 指的是自发性的创意Q?/span> self-motivated creativity Q。有?jin)源源不l的创意Q才能保持高度的竞争力。Y件品相当需要创意和z烛先机的能力,在大家一H蜂抢做某Y件或某服务之前,已l先完成深度的耕耘,技术自然比别h来得扎实Q也能迅速地q合?jng)场需求,为公司创造最大的利益?/span>
关于CM
如果你最q是个大忙hQ有一堆事情要做,先别急着买计机书籍。计机书籍更新的速度很快Q可不比四书五经Q可以祖传父、父传子Q?/span> 代代受用不尽。以前我也常冲动之下C(jin)好书回家Q然后忙得没I它,{到I闲下来Ӟ新版本也已经出现?jin),懊(zhn)不已Q如果不急着用的书, 千万别急着乎ͼ不然可能q没来得?qing)看q本书,新版本又出来?jin),信息界不行考古的?/span>
Java
学习(fn)之道
认识
Java
的原?/span>
*
学会(x)
Java
语言
*
对象导向的思维
* API
*
开发工L(fng)用法
下面分别p几点详细阐述?/span>
学习(fn)
Java
的原?/span>
?jin)?/span>
Java
的原理,才有可能真正体会(x)
Java
的一切,学习(fn)M事情Q只要能掌握原理Q就?x)比较顺利。我发现许多Z?/span>
Java
已经逑ֹQ却q?/span>
Java
最基本的特质都不清楚?/span>
一般来_(d)信息pL业的学生Q对于信息的C物学?fn)的速度Q会(x)比其它科pL得快Q就是因为四q的教育Z们奠定了(jin)学习(fn)C物的基础Q这也是信息p课E的价值所在?/span>
除非你受q的基础训练够扎实,否则在学?fn)或使?/span>
Java
的过E中Q你一定会(x)需要参考到q些信息pdU的知识。我各位可以在闲暇之余,把信息系课本的书拿来M诅R这是治本之道,l非立竿见媄(jing)的特效药Q必要有耐心(j)?/span>
学习(fn)
Java
语言
学习(fn)
Java
语言很简单,毕竟
Java
语言也只包含五十多个关键词(
keyword
Q与几十个算W(
operator
Q,再加?/span>
Java
语法Q?/span>
syntax
Q也很简单,所以一般h可以很快学?/span>
Java
语言。危险的是,很多为已l完全掌?/span>
Java
语言Q但其实对于内部的运作机制仍不能掌握Q这些盲Ҏ(gu)时候会(x)让你无法完全掌控
Java
语言。克服这些盲点的方式是看?/span>
The Java Language Specification, 2nd Ed.
」(没有中文版)(j)来彻底弄?/span>
Java
E序语言Qƈ看?/span>
Inside the Java Virtual Machine, 2nd Ed.
」(有中文版Q但译得@Q%Q)(j)来彻底掌?/span>
Java
虚拟机器的运作方式?/span>
学习(fn)对象导向的思维
学会(x)?jin)语aQƈ不代表就可以设计出好的对象导向系l架构。想要成为对象导向的专家Q往往需要:(x)
*
多看相关的书Q特别是
Design Pattern
?/span>
Refactoring
的书?/span>
*
多观摩别人的E序Q例?/span>
Java API
?/span>
design
?/span>
implementation
Q?/span>
*
多写E序
学习(fn)
API
学会(x)
Java
语言之后Q还需要学?x)一?/span>
API
才能写出有用的程序?/span>
Java
?/span>
API
非常多,必须规划好一个学?fn)\径,才不?x)在瀚的
API
大v中迷失。必备的
API
包括?jin)?x)
IO
?/span>
New IO
?/span>
Collection Framework
?/span>
Network
?/span>
RMI
?/span>
JAXP...
{。至于其它的
API
Q就看你的需求而定Q大致上分成Q?/span>
* GUI
c:(x)
JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ...
*
* J2ME
c(q一cM是我的专长,无法提供学习(fn)序Q?/span>
学习(fn)开发工L(fng)用法
只用
JDK
Q是很难写出大型E序的,所以通常E序员会(x)使用
JBuilder/VisualAge/ VisualCafe
{工Pq些软g卖这么贵Q一定有它的价|值得׃些时间好好学?fn)这些开发工L(fng)使用方式Q你会(x)发现开发工h提供的许多功能,可以让你在开发过E中生力大增?/span>
Static
的意义与实作方式
Class(static) field
Q共用一块记忆体
class(static) method
Q共用一块记忆体
instance(
?/span>
static) field
Q随着每个
instance
各有一块记忆体
instance (
?/span>
static) method
Q共用一块记忆体
instance method
Z么不是随着每个
instance
占有一块记忆体Q反倒是q一块记忆体Q其实,让每?/span>
instance method
如同
instance field
一P随着每个
instance
占有一块记忆体Q这么做当然是可以的Q只?/span>
Java
~译器和
JVM
都不q么做,因ؓ(f)太浪费记忆体I间?jin)。一?/span>
field
则占用一?/span>
byte
Q多则占用数?/span>
Byte
Q但?/span>
method
则C
byte
Q多则数?/span>
Kilo Byte
?/span>
Mehtod
耗费的记忆体?/span>
field
的数癑ր,甚至数千倍,当然是能q尽量共用,比较不会(x)消耗记忆体。既?/span>
JVM
让一?/span>
class
的所?/span>
instance
q相同?/span>
instance method
Q下面两行程式码?/span>
instanceMethod()
内部Ӟ如何区分?/span>
instance1
?/span>
instance2
Q?/span>
instance1.instanceMethod();
instance2.instanceMethod();
因ؓ(f)~译器会(x)帮我们在?/span>
instance1
?/span>
instance2
个别传入
instanceMethod()
中当作第一个参数。也是_(d)M
instance method
参数的实际个数都?x)比表面上多一个,q个多出来的参数是由
Java
~译器帮我们加上ȝQ用来代表对应的
instance
。此参数的变数名UCؓ(f)
this
Q也?/span>
Java
的一个关键字Q?/span>
keyword
Q?/span>
当调用某?/span>
instance method
或用某?/span>
instance field
Ӟ你必d前面加上?/span>
instance
的名Uͼ如果?/span>
instance method/field
相关?/span>
instance
和当时程式码所在的
instance method
?/span>
instance
指的是同一?/span>
instance
Ӟ?/span>
instance
的名U就?/span>
this
Q这U情况下Q你也可以选择不在前面加上?/span>
this.
」?/span>
然而,在某些状况下Q非得在前面加上?/span>
this.
」不可。例如,?/span>
method
中的参数或区域变数和
instance field
名称完全相同Ӟ如果不在前面冠上?/span>
this.
」,那么指的是参数或区域变数Q如果在前面冠上?/span>
this.
」,那么指的才是
instance field
?/span>
--复制?br /> create table stuBak
as select * from stuInfo;
--复制表结?br /> create table stuBak2
as select * from stuInfo where 1=2;
--在已有的表结构中插入数据
insert into stuBak2
select * from stuBak;
update stuBak set s_sex=’男?
savepoint mark;
rollback to savepoint mark;
rollback;
--l予其他用户权限
connect scott/tiger@itjob;
grant select on emp to yangrs; --只给查询
grant all on emp to yangrs --l所有的权限
connect yangrs/yangrs@itjob;
select * from scott.emp;
-- 取消权限
connect scott/tiger@itjob;
revoke select on emp from yangrs;
connect yangrs/yangrs@itjob;
select * from scott.emp; --此时已经q接不上M(jin)
--伪列 rowid rownum
select rowid,rownum from stuInfo;
--用于分页
select * from (select rownum as num,stuInfo.* from stuInfo) where num>5;
--sqlserver中是使用top来分?br /> --哑元?br /> select sysdate from dual;
select systimestamp from dual;
--对表的修?br /> alter table stuInfo add(s_sal number(3));
--is null and is not null
select * from stuInfo where s_note is null;
select * from stuInfo where s_name like ’y%? --%代笔L个字W?br /> select * from stuInfo where s_name like ’y_? --—_代表一个字W?br /> select * from stuInfo where s_name like ’y??
select * from stuInfo order by s_age desc; -- 排序
select * from stuInfo order by s_birthday asc;
select * from stuInfo order by s_age desc,s_birthday asc;
--可以有两个条?br /> --分组
select * from stuInfo where s_name<>’yangrs?
select * from stuInfo where s_age=19;
select * from stuInfo where s_name<>’yangrs%? --q样是不行的
--调用函数
select sum(s_sal) as 奖学?from stuInfo;
select avg(s_age) q_q龄 from stuInfo;
select s_name,s_age from stuInfo group by s_age;
select ’hell’||’loworld?from dual;
select 1+1 from dual;
--转换大小?br /> update stuInfo set s_name=upper(s_name);
update stuInfo set s_name=lower(s_name);
--转换ascii?br /> select ascii(’A? from dual;
select ’Hello’||’\t’||’World?from dual;
select ’Hello’||chr(9)||’World?from dual;
select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss? from dual;
select add_months(sysdate,-12) from dual;
-- 一q以前的今天
select last_day(sysdate) from dual;
select to_char(sysdate,’yyyy/mm/dd? from dual; --改变日期格式
select to_char(to_date(?9990214?’yyyymmdd?,’yyyy"?mm"?dd"?? from dual;
select to_char(to_date(?9990214?’yyyymmdd?,’yyyy"?mm"?dd"?? from dual;
ref:http://www.zlksw.cn/html/jsj/Oraclerenzheng/xuexiziliao/200812/24-7834.html
1. 保 project->build automatically 已经被选上.
2. 如果选上?也不好, 使用q一? project->clean..->选第2个clean select project, 勾上start build immediatelly
3.删除现在的项?提前讄好编译文件输\径,重新导入源文Ӟ讄eclipseZ存时~译Q然后在保存的时候就可以自动~译?/p>
4.如果目里引?jin)某个不用的jar包,而那个包又被你删?jin),׃?x)出现不报错但怎么也编译不出来class文g的情况,可以把所有包都删?然后一个一个的再引?需要的),不要一下子把所有包都引入来,没用的可能会(x)引v不良后果.
5. 惛_掉某个class文g重新生成Q删除class文g后,但classes目录下的文g夹被其它E序打开Q比如Total Commander。此时编译也不会(x)通过Q在problems下可能会(x)提示“con''t delete classes ……”。关掉其它程序重新编译即可?/p>
6.q有U情冉|remove?JRE System LibraryQ重新导入即可编译。但是什么原因导致的q不清楚?/p>
7.把build path中所有包都remove掉。然后又add jars,add libraries把需要的加进去,居然又开始编译了(jin)。。?/p>
8.project->properties->java build path->source->.../WEB-INF/src的output folder不要默认Q编辑让它指?./WEB-INF/classes
然后重新点击build工程卛_自动~译?/p>
9.再就是最重要的要看工E下面是否缺了(jin)work目录,׃CVS控制时不把work加如版本,所以checkout后没有这个目?要手工加上有的工E就能自动编译了(jin)
最开始的时?我只扑ֈ?jin)前?个方?但是他们都没有解x的问?无意中我打开?Problems"标签,发现里面说缺work目录,手工加上,然后h目可以了(jin).
最后两个是我在写这个ȝ的时候发现的.特别是第?ji)?对用CVSq行版本控制的项目比较有?
文章出处Q?a >http://www.diybl.com/course/1_web/webjs/2008410/109723.html
new Option("文本","?,true,true)
使用 select 选项列表 (x通常的下拉列表框之类? 也是一U给用户提供选项的有用方法,看一下下边的代码Q? 引用
<select name="state" size=1>
<option value="AL">Alabama </option> <option value="AK">Alaska </option> <option value="AZ">Arizona </option> <option value="AR">Arkansas </option> <option value="CA">California </option> <option value="CO">Colorado </option> <option value="CT">Connecticut </option> <option value="DE">Delaware </option> <option value="DC">District of Columbia </option> ... <option value="WY">Wyoming </option> </select>
引用
var opt = new Option(text, value, defaultSelected, selected)
参数 text 是显C在面上的选项的文字,参数 value 对应?<OPTION> 标记中的 VALUE="...." 属性,?option 对象的|参数 defaultSelected ?selected 是布?yu)(dng)|用来讄此新建的 option 对象是否为默认选项Q以?qing)是否被选中Q这两个参数都是可选的Q即可以不提供这两个参数的参数倹{这?option 对象可以被加入到一?options 数组中。而删除一个已l存在的 option 对象Q只需此对象在数l中的那个元素设|ؓ(f)I?('null' ? 卛_Q同Ӟq样也数组变小?jin)? |
本文最初发表《程序员》杂志第三期Q现全文脓(chung)上,内容已经q编辑修C(jin)很多:)
从事?jin)数q的Web开发工作,来觉得现在对WEB开发有?jin)更高的要求。要写出漂亮的HTML代码Q要~写_致的CSS样式表展C每个页面模块;要调?a >javascriptl页面增加一些更zL的要素;要用Ajaxl用户带来更好的体验。一个优U的WEB开发h员需要顾?qing)更多层面,才能交出一份同样优U的作业。ؓ(f)帮助q大正处于Web2.0z流中的开发h员,在这里ؓ(f)大家介绍一ƾ轻巧灵zȝ辅助开发工兗?/p>
Firebug是Firefox下的一Ƒּ发类插gQ现属于Firefox的五星强力推荐插g之一。它集HTML查看和编辑、Javascript控制台、网l状늛视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。Firebug如同一把精巧的瑞士军刀Q从各个不同的角度剖析Web面内部的细节层面,lWeb开发者带来很大的便利。这是一ƾ让人爱不释手的插gQ如果你以前没有接触q它Q也许在阅读本文之后Q会(x)有一试的Ʋ望。笔者在撰写此文的时候,正逢Firebug发布1.0正式版,q不能不说是Uy合?br />
Firebug插g虽然功能强大Q但是它已经和Firefox览器无~地l合在一P使用单直观。如果你担心(j)它会(x)占用太多的系l资源,也可以方便地启用/关闭q个插gQ甚至针对特定的站点开启这个插件?/p>
在安装好插g之后Q先用Firefox览器打开需要测试的面Q然后点d下方的绿色按钮或使用快捷键F12唤出Firebug插gQ它?x)将当前面分成上下两个框架Q如?所C?/p>
?QFirebug插g展开囄
从图1中看刎ͼFirebug?个主要的Tab按钮Q下文将主要介绍介绍q几斚w的功能?/p>
Console | HTML | CSS | Script | Dom | Net |
控制?/td> | Html查看?/td> | Css查看?/td> | 脚本条时? | Dom查看?/td> | |络状况监视 |
控制台能够显C当前页面中的javascript错误以及(qing)警告Qƈ提示出错的文件和行号Q方便调试,q些错误提示比v览器本w提供的错误提示更加详细且具有参考h(hun)倹{而且在调试Ajax应用的时候也是特别有用,你能够在控制台里看到每一个XMLHttpRequestshpost出去的参数、URLQhttp头以?qing)回馈的内容Q原本似乎在q后黑匣子里q作的程序被清清楚楚地展C在你面前?/p>
象C shell或Python shell一P你还能在控制C查看变量内容Q直接运行javascript语句Q就是大段的javascriptE序也能够正运行ƈ拿到q行期的信息?/p>
控制台还有个重要的作用就是查看脚本的log, 从前你也怹(fn)惯了(jin)使用alert来打印变量,但是Firebugl我们带来了(jin)一个新朋友 —?console.log, 最单的打印日志的语法是q样的:(x)
如果你有一堆参数需要组合在一赯出,可以写成q样Q?/p>
Firebug的日志输出有多种可选的格式以及(qing)语法Q甚臛_以定制彩色输出,比v单调的alertQ显然更加方便,限于幅Q这里不做详l说明,但是有志于提高debug效率的读者,可以到Firebug的官方站点(见附录)(j)查看更详l的教程?/p>
?Q?在控制台里调试javascript
W一ơ看到Firebug强大的HTML代码查看器,p得它与众不同Q相比于Firefox自带的HTML查看器,它的功能强大?jin)许多?HTML
首先你看到的是已l经q格式化的HTML代码Q它有清晰的层次Q你能够方便地分辨出每一个标{之间的从属q行关系Q标{折叠功能能够帮助你集中精力分析代码。源代码上方q标记出?jin)DOM的层ơ,如图3所C,它清楚地列出?jin)一个hml元素的parent、child以及(qing)root元素Q配合F(tun)irebug自带的CSS查看器用,?x)给div+css面分析~写带来很大的好处。你q可以在HTML查看器中直接修改HTML源代码,q在览器中W一旉看到修改后的效果Q光凭这一点就?x)让许多面设计师死心(j)塌地地成?f)Firebug的粉丝了(jin)?/p>
有时候页面中的javascript?x)根据用L(fng)动作如鼠标的onmouseover来动态改变一些HTML元素的样式表或背景色QHTML查看器会(x)页面上改变的内容也抓下来,q以黄色高亮标记Q让|页的暗操作彻底成为历双Ӏ?/p>
利用Inspect(g)查功能,我们q可以用鼠标在页面中直接选择一些区块,查看相应的HTML源代码和CSS样式表,真正的做到所见即所得,如果你用了(jin)外部~辑器修改了(jin)当前|页Q可以点击Firebug的reload囄重新载入|页Q它?x)l跟t你之前用Inspect选中的区块,方便调试?/p>
?:QHTML查看?br />
Firebug的CSS调试器是专ؓ(f)|页设计师们量n定做的?/p>
如今的网设计言必称div+cssQ如果你是用table套出来的HTML面Q就得按q规矩重构一遍,否则昑־你不够时髦!用div做出来的面的确能精HTML代码QHTML标签减肥的结果就是CSS样式表的~写成了(jin)面制作的重头戏。Firebug的CSS查看器不仅自下向上列出每一个CSS样式表的从属l承关系Q还列出?jin)每一个样式在哪个样式文g中定义。你可以在这个查看器中直接添加、修攏V删除一些CSS样式表属性,q在当前面中直接看C改后的结果?/p>
一个典型的应用是面中的一个区块位|显得有些不太恰当,它需要挪动几个象素。这时候用CSS调试工具可以L~辑它的位置——你可以Ҏ(gu)需要随意挪动象素?br />如图4中正在修改一个区块的背景艌Ӏ?/p>
提示Q如果你正在学习(fn)CSS样式表的应用Q但是总记不住常用的样式表有哪些|可以试在CSS调试器中选中一个样式表属性,然后用上下方向键来改变它的|它会(x)把可能的g个个遍历l你看?/p>
?: CSS查看器,能够直接修改样式?br />
我们可以利用Firebug来查看页面中某一区块的CSS样式表,如果q一步展开右侧Layout tab的话Q它?x)以标尺的Ş式将当前区块占用的面U清楚地标识出来Q精到象素Q更让h惊讶的是Q你能够在这个可视化的界面中直接修改各象素的|面上区块的位置׃(x)随改动而变化。在面中某些元素出现错位或者面U超出预料值时Q该功能能够提供有效的帮助,你可以籍此分析offset、margin、padding、size之间的关p,从而找决问题的办法?/p>
?QFirebug中的CSS标尺
也许有一天,你的老板或者客hCQ抱怨你制作的网速度奇慢Q你该如何应对?你或怼(x)说这可能是网l问题,或者是?sh)脑配置问题Q或者是E序太慢Q或者直说是他们的h品问题?不管怎么_(d)最后你可能被要求去解决q个有多U可能的问题?/p>
|络状况监视器能帮你解决q个手问题。Firebug的网l监视器同样是功能强大的Q它能将面中的CSS、javascript以及(qing)|页中引用的囄载入所消耗的旉以矩状图呈现出来Q也许在q里你能一把揪出拖慢了(jin)你的|页的元Ӟq而对|页q行调优Q最后老板满意客户Ƣ喜Q你的饭也因此而牢固?/p>
|络监视器还有一些其它细节功能,比如预览囄Q查看每一个外部文件甚xxmlHttpRequestsh的http头等{?/p>
?Q网l状늛视器
q是一个很不错的javascript脚本调试器,占用I间不大Q但是单步调试、设|断炏V变量查看窗口一个不。正所谓麻雀虽小Q五脏俱全?/p>
如果你有一个网站已l徏成,然而它的javascript有性能上的问题或者不是太完美Q可以通过面板上的Profile来统计每D脚本运行的旉Q查看到底是哪些语句执行旉q长Q一步步排除问题?/p>
?Qjavascript调试?br />
DOM(Document Object Model)里头包含?jin)大量的Object以及(qing)函数、事Ӟ在从前,你要想从中查到需要的内容Q绝非易事,q好比你M(jin)一个巨大的图书馆,惌扑ֈ几本名字不太切的小书,众多的选择?x)让你无所适从。而用Firebug的DOM查看器却能方便地览DOM的内部结构,帮助你快速定位DOM对象。双M个DOM对象Q就能够~辑它的变量或|~辑的同Ӟ你可能会(x)发现它还有自动完成功能,当你输入document.get之后Q按下tab键就能补齐ؓ(f)document.getElementByIdQ非常方ѝ如果你认ؓ(f)补齐得不够理惻I按下shift+tab又会(x)恢复原状。用?jin)Firebug的DOM查看器,你的javascript从此扑ֈ?jin)驱使的对象QW(xu)eb开发也许就成了(jin)一件乐事?/p>
?: Dom查看?br />
Firebug插g提供?jin)一整套web开发所必需的工兗从HTML的编写,到CSS样式表的化调优Q以?qing)用javascript脚本开发,亦或是Ajax应用QFirebug插g都会(x)成ؓ(f)你的得力助手。所谓工Ʋ善其事Q必先利其器。在Web2.0的时代,a必称AjaxQ动辄就是用户体验提升,如果把Firebug工具用好Q必能让你如虎添|HTML、CSS、javascript整理得服服帖帖,从此成ؓ(f)web开发中的专家人物?/p>
Firebug的中文含义是萤火虫,作者是Joe HewittQ官方网?http://www.getfirebug.com
Firefox亦即火狐览器,是近q来撼动IE览器市(jng)场占有率的一支强大力量,要不是它的出玎ͼ我想有生之年说不定也看不到IE 7的发布了(jin)Q官方网?http://www.firefox.com
ref:http://www.ooso.net/index.php/archives/294
6、结合类
6.1 email的判断?br />6.2 手机L(fng)的验?br />6.3 w䆾证的验证
二、功能类
1、时间与相关控gc?br />1.1 日历
1.2 旉控g
1.3 万年?br />1.4 昄动态显C时钟效果(文本Q如OA中时_(d)(j)
1.5 昄动态显C时钟效?(囑փQ像手表)
2、表单类
2.1 自动生成表单
2.2 动态添加,修改Q删除下拉框中的元素
2.3 可以输入内容的下拉框
2.4 多行文本框中只能输入iMax文字。如果多输入?jin),自动减少到iMax个文字(多用于短信发?
3、打印类
3.1 打印控g
4、事件类
4.1 屏蔽右键
4.2 屏蔽所有功能键
4.3 --> ?lt;-- F5 F11,F9,F1
4.4 屏蔽l合键ctrl+N
5、网设计类
5.1 q箋滚动的文字,囄Q注意是q箋的,两段文字和图片中没有I白出现Q?br />5.2 html~辑控gc?br />5.3 颜色选取框控?br />5.4 下拉菜单
5.5 两层或多层次的下拉菜?br />5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏?
5.7 状态栏Qtitle栏的动态效果(例子很多Q可以研I一下)(j)
5.8 双击后,|页自动滚屏
6、树(wi)型结构?br />6.1 asp+SQL?br />6.2 asp+xml+sql?br />6.3 java+sql或者java+sql+xml
7、无Ҏ(gu)效果的制?br />8、连动下拉框技?br />9、文本排?br />---------------------------------------------------------------------------------------
一、验证类
1、数字验证内
1.1 整数
/^(-|\+)?\d+$/.test(str)
1.2 大于0的整?Q用于传来的ID的验?
/^\d+$/.test(str)
1.3 负整数的验证
/^-\d+$/.test(str)
2、时间类
2.1 短时_(d)形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(\d{1,2})(?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('输入的参C是时间格?); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("旉格式不对");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
2.3 长时_(d)形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})\d{1,2})\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空
3.2 多行文本框的g能ؓ(f)I?br />3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?br />3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?br />3.8 文g上传q程中判断文件类?br />4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成
4.2 判断字符由字母和数字l成?/p>
4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?br />/^([a-zA-z_]{1})([\w]*)$/g.test(str)
4.4 字符串替换函?Replace();
5、浏览器c?br />5.1 判断览器的cd
window.navigator.appName
5.2 判断ie的版?br />window.navigator.appVersion
5.3 判断客户端的分L?br />window.screen.height; window.screen.width;
6、结合类
6.1 email的判断?br />function ismail(mail)
{
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\-AT-[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}
6.2 手机L(fng)的验?br />6.3 w䆾证的验证
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("输入的数字位C对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("输入的n份证?"+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}
-------------------------------------------------------------------------------------
3.7 复选框的全选,多选,全不选,反?/p>
全?/p>
全?/p>
function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
for (var i=0; ia[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong."+ str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
for (var i=0; i{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}
3.8 文g上传q程中判断文件类?/p>
-------------------------------------------------------------------------------------
Q.w䆾证严格验证:(x)
Q.验证QP地址
function isip(s){
var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
var re=s.split(".")
return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}
var s="202.197.78.129";
alert(isip(s))
Q.加sp1后还能用的无Ҏ(gu)H口Q!
/*--- Special Thanks For andot ---*/
/*
This following code are designed and writen by Windy_sk
You can use it freely, but u must held all the copyright items!
/
/- Thanks For andot Again ---*/
var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle='outset'}, onmousedown=function(){if(event.button!=2)this.style.borderStyle='inset'});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";
//Build Window
include.startDownload(CW_url, function(source){content=source});
function insert_content(){
var temp = "";
CW_Body.style.overflow = "hidden";
CW_Body.style.backgroundColor = "white";
CW_Body.style.border = "solid black 1px";
content = content.replace(/]*)>/g,"");
temp += "";
temp += "";
temp += "Chromeless Window For IE6 SP1";
temp += "";
temp += "?";
temp += "0";
temp += "1";
temp += "x";
temp += "";
temp += "";
temp += content;
temp += "
";
temp += "";
CW_Body.innerHTML = temp;
}
setTimeout("insert_content()",1000);
var if_max = true;
function show_CW(){
window.moveTo(10000, 10000);
if(if_max){
New_CW.show(CW_top, CW_left, CW_width, CW_height);
if(typeof(New_CW.document.all.include)!="#ff0000"){
New_CW.document.all.include.style.width = CW_width;
New_CW.document.all.Max.innerText = "1";
}
}else{
New_CW.show(0, 0, screen.width, screen.height);
New_CW.document.all.include.style.width = screen.width;
}
}
window.onfocus = show_CW;
window.onresize = show_CW;
// Move Window
var drag_x,drag_y,draging=false
function drag_move(e){
if (draging){
New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
return false;
}
}
function drag_down(e){
if(e.button==2)return;
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
drag_x=e.clientX;
drag_y=e.clientY;
draging=true;
e.srcElement.setCapture();
}
function drag_up(e){
draging=false;
e.srcElement.releaseCapture();
if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
CW_top = e.screenX-drag_x;
CW_left = e.screenY-drag_y;
}
?sh)话L(fng)的验?/p>
要求Q?br />(1)?sh)话L(fng)由数字?("?)"?-"构成
(2)?sh)话L(fng)???br />(3)如果?sh)话L(fng)中包含有区号Q那么区号ؓ(f)三位或四?br />(4)区号?("?)"?-"和其他部分隔开
(5)Ud?sh)话L(fng)?1?2位,如果?2?那么W一位ؓ(f)0
(6)11位移动电(sh)话号码的W一位和W二位ؓ(f)"13"
(7)12位移动电(sh)话号码的W二位和W三位ؓ(f)"13"
Ҏ(gu)q几条规则,可以与出以下正则表达式:(x)
(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
--------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
//(g)验法Z?br />function isCorporationCode(s){
var patrn=/^(\d){15}$/;
if (!patrn.exec(s)) return false
return true
}
//校验d名:(x)只能输入5-20个以字母开头、可带数字、“_”、?”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验用户姓名Q只能输?-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验密码Q只能输?-15个字母、数?br />function isPasswd(s)
{
var patrn=/^[a-zA-Z0-9]{6,15}$/;
if (!patrn.exec(s)) return false
return true
}
//(g)验体?br />function isAvoirdupois(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
var patrn2=/^[1-9]{1}$/;
var intPart=s.indexOf('.');
var decPart=s.lastIndexOf('.');
if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true
if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false
if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false
if (eval(s)<2 || eval(s)>200) return false
return true
}
//校验普通电(sh)话、传真号码:(x)可以?”开_(d)除数字外Q可含有??br />function isTel(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校验手机L(fng)Q必M数字开_(d)除数字外Q可含有??br />function isMobile(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校验地区代码
function isAreaCode(s)
{
var patrn=/^(\d){6}$/;
if (!patrn.exec(s)) return false
return true
}
//校验邮政~码
function isPostalCode(s)
{
var patrn=/^[1-9]{1}(\d){5}$/;
if (!patrn.exec(s)) return false
return true
}
//校验搜烦(ch)关键?br />function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/? ]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验是否为ip地址
function isIP(s)
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
//(g)验页码是否正?br />function isPage(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
if (!patrn.exec(s)) return false
return true
}
//表单输入值错误提C?br />function vErr(o,s){
alert(s);
if (o) o.focus();
return false;
}
//判断单?br />function chkRadio(o){
for (i=0;iif (o[i].checked) return true;
}
return false;
}
//====================================表单c?===============================
// 文g上传q程中判断文件类?br />/*
/
//表单的g能ؓ(f)I?br />function isNull(elem){
//var pattern=/^\s+|\s+$/;
if(elem.replace(/(^\s+|\s$)/g, "")==""){
return false;
}else{
return true;
}
}
//不能过imax字符
function imax(elem){
if(elem.length>imax){
return false;
}else{
return true;
}
}
//不能于imix字符
function imix(elem){
if(elem.lengthreturn false;
}else{
return true;
}
}
//输入Z文判?br />function isChinese(elem){
var pattern=/[^\x00-\xff]/g;
if(pattern.test(elem)){
//包含中文
return false;
}else{
//不包含中?br />return true;
}
}
/ *********************************************************************************************************************
.cMenu {
FILTER: alpha(opacity=0);BACKGROUND-COLOR: #D6D3CE;BORDER-BOTTOM: #666666 2px solid; BORDER-LEFT: #E4E4E4 2px solid; BORDER-RIGHT: #666666 2px solid; BORDER-TOP: #E4E4E4 2px solid; COLOR: #000000; CURSOR: default; FONT-SIZE: 9pt; color:#000000;FONT-WEIGHT: normal; LINE-HEIGHT: 20px; POSITION: absolute; VISIBILITY: hidden; WIDTH: 110px
}
.menuitems {
font-size:9pt;
MARGIN: 2px;
PADDING-BOTTOM: 0px;
PADDING-LEFT: 15px;
PADDING-RIGHT: 3px;
PADDING-TOP: 0px;
}
<!--[if IE]>
onmouseover=highlightie5()>
?sh)话L(fng)的验?/p>
要求Q?br />(1)?sh)话L(fng)由数字?("?)"?-"构成
(2)?sh)话L(fng)???br />(3)如果?sh)话L(fng)中包含有区号Q那么区号ؓ(f)三位或四?br />(4)区号?("?)"?-"和其他部分隔开
(5)Ud?sh)话L(fng)?1?2位,如果?2?那么W一位ؓ(f)0
(6)11位移动电(sh)话号码的W一位和W二位ؓ(f)"13"
(7)12位移动电(sh)话号码的W二位和W三位ؓ(f)"13"
Ҏ(gu)q几条规则,可以与出以下正则表达式:(x)
(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
<script language="javascript">
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
alert(reg.test(str));
}
</script>
<input type=text name="iphone">
<input type=button onclick="PhoneCheck(document.all.iphone.value)" value="Check">
----------------------------------------------------------------------------------------
<%
'********************************************
'函数功能Q正则表辑ּ校验
'参数patrnQ要校验的类?br />' "User" - 用户?br />' "Truename" - 英文姓名
' "Passwd" - 密码
' "Tel" - ?sh)?传真
' "Mobil" - 手机
' "Date" - 日期Q格式:(x)yyyy-mm-ddQ?br />' "Email" - ?sh)子邮g
' "Postalcode" - 邮政~码
' "Search" - 搜烦(ch)关键?br />' "Int" - 整数
'参数strngQ要校验的字?br />'q回|(x)校验l果Q正返回trueQ错误返回false
'********************************************
Function IsVerify(patrn,strng)
strng=Trim(strng)
Select Case patrn
Case "User" '用户?br />patrn="^[a-z]{1}([a-z0-9]|[._]){2,19}$"
Case "Truename" '英文姓名
patrn="^[a-zA-Z]{1,30}$"
Case "Passwd" '密码
patrn="^(\w){6,20}$"
Case "Tel" '?sh)?传真
patrn="^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$"
Case "Mobil" '手机
patrn="^(\d)+[-]?(\d){6,12}$"
Case "Date" '日期Q格式:(x)yyyy-mm-ddQ?br />patrn="^[12]{1}(\d){3}[-][01]?(\d){1}[-][0123]?(\d){1}$"
Case "Email" '?sh)子邮g
patrn="^((\w)|[-]|[.])+@(((\w)|[-])+[.])+[a-z]{2,4}$"
Case "Postalcode" '邮政~码
patrn="^[a-z0-9 ]{3,12}$"
Case "Search" '搜烦(ch)关键?br />patrn="^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$"
Case "Int" '整数
patrn="^[1-9]{1}[0-9]{0,6}$"
Case "Array"
patrn="^[0-9]{1}([0-9]|[\,]){0,150}$"
End Select
Dim regEx
Dim Match
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
Matches = regEx.test(strng)
IsVerify = Matches
Set regEx = Nothing
End Function
'********************************************
'函数功能Q对输入框的Ҏ(gu)字串q行qo(h)保存
'参数strPassQ过滤前的字W串
'q回|(x)qo(h)后的字符?br />'********************************************
Function SQLencode(byVal strPass)
strPass = Replace(strPass, "&", "&")
strPass = Replace(strPass, "<", "<")
strPass = Replace(strPass, ">", ">")
strPass = Replace(strPass, """", """)
strPass = Replace(strPass, "'", "'")
strPass = Replace(strPass, " ", " ")
strPass = Replace(strPass,chr(13)&chr(10),"<br/>")
SQLencode = strPass
End Function
'********************************************
'函数功能Q对SQLencode函数qo(h)后的字符串进行还?br />'参数strPassQ经q过滤后的字W串
'q回|(x)q原的过滤前的字W串
'********************************************
Function SQLdecode(byVal strPass)
If Not isNull(strPass) Then
strPass = Replace(strPass, "<", "<")
strPass = Replace(strPass, ">", ">")
strPass = Replace(strPass, ""","""" )
strPass = Replace(strPass, "'","'" )
strPass = Replace(strPass,"<br/>",chr(13)&chr(10))
End If
SQLdecode = strPass
End Function
'********************************************
'函数功能Q生成随机密码(字符为数字与大小写字母集合)(j)
'参数l(f)engthQ密码长?br />'q回|(x)随机密码
'********************************************
Function random(length)
Dim n,str
rnds=""
Randomize
For i=1 To length
n=Int(75*Rnd+48)
If (n>57 and n<65) Or (n>90 and n<97) Then
i=i-1
Else
rnds=rnds&Chr(n)
End If
Next
random=rnds
End Function
'********************************************
'函数功能Q对密码q行加密/解密Q最大长度ؓ(f)15位)(j)
'********************************************
Function Encrypt(preString)
Dim pwds,s
pwds=""
s=Left(preString,15)
For i=1 To Len(s)
seed=170-Asc(Mid(s,i,1))-i
pwds=pwds & Chr(seed)
Next
Encrypt=pwds
End Function
'********************************************
'函数功能Q格式化当前旉字串
'参数Q无
'q回|(x)q回当前旉的纯数字字符串方式的表示Q例如:(x)当前旉2001-10-3 2:34:6Q返回字W串"20011003023406"Q?br />'********************************************
Function TheDate()
y=year(date())
m=month(date())
d=day(date())
h=Hour(time())
n=Minute(time())
s=Second(time())
If Len(m)=1 Then m="0"&m
If Len(d)=1 Then d="0"&d
If Len(h)=1 Then h="0"&h
If Len(n)=1 Then n="0"&n
If Len(s)=1 Then s="0"&s
thedate=y&m&d&h&n&s
End Function
'********************************************
'函数功能Q返回字W串的长?br />'参数Q字W串
'q回|(x)字符串长?br />'********************************************
Function strLen(str)
dim p_len
p_len=0
strlen=0
if trim(str)<>"" then
p_len=len(trim(str))
for xx=1 to p_len
if asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
else
strlen=int(strlen) + 1
end if
next
end if
End Function
'********************************************
'函数功能Q发送邮仉知
'参数Q字W串
'q回|(x)成功/p|
'********************************************
Function SendMail(ToAddress, Subject, Body)
On Error Resume Next
Set objMail = Server.CreateObject("JMail.Message")
objMail.From = ADR_Email
objMail.FromName = "ADR理中心(j)"
objMail.Subject = Subject
objMail.AddRecipient ToAddress
objMail.Body = Body
If objMail.Send("") Then
SendMail = True
Else
SendMail = False
End If
If Err.Number<> 0 Then SendMail = False
Set objMail = Nothing
On Error Goto 0
End Function
%>
-----------------------------------------------------------------------------------
//(g)验法Z?br />function isCorporationCode(s){
var patrn=/^(\d){15}$/;
if (!patrn.exec(s)) return false
return true
}
//校验d名:(x)只能输入5-20个以字母开头、可带数字、“_”、?”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验用户姓名Q只能输?-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[^`~!@#$%^&*()+-=|\\\[\]\{\}:;\'\,.<>/? 0-9]{2,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验密码Q只能输?-15个字母、数?br />function isPasswd(s)
{
var patrn=/^[a-zA-Z0-9]{6,15}$/;
if (!patrn.exec(s)) return false
return true
}
//(g)验体?br />function isAvoirdupois(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
var patrn2=/^[1-9]{1}$/;
var intPart=s.indexOf('.');
var decPart=s.lastIndexOf('.');
if (intPart==-1 && patrn.exec(s) && eval(s)>=2 && eval(s)<=200) return true
if (intPart!=decPart || intPart==0 || intPart+2!=s.length) return false
if (!patrn.exec(s.substring(0,intPart)) || !patrn2.exec(s.substring(decPart+1))) return false
if (eval(s)<2 || eval(s)>200) return false
return true
}
//校验普通电(sh)话、传真号码:(x)可以?”开_(d)除数字外Q可含有??br />function isTel(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校验手机L(fng)Q必M数字开_(d)除数字外Q可含有??br />function isMobile(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校验地区代码
function isAreaCode(s)
{
var patrn=/^(\d){6}$/;
if (!patrn.exec(s)) return false
return true
}
//校验邮政~码
function isPostalCode(s)
{
var patrn=/^[1-9]{1}(\d){5}$/;
if (!patrn.exec(s)) return false
return true
}
//校验搜烦(ch)关键?br />function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\[\]\{\}:;\'\,.<>/? ]{1}[^`~!@$%^&()+=|\\\[\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校验是否为ip地址
function isIP(s)
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
//(g)验页码是否正?br />function isPage(s)
{
var patrn=/^[1-9]{1}[0-9]{0,2}$/;
if (!patrn.exec(s)) return false
return true
}
//表单输入值错误提C?br />function vErr(o,s){
alert(s);
if (o) o.focus();
return false;
}
W一张:(x)爱情
沉醉于爱情中的h是幸的?br />镉K?/font>人生之\Q有你的陪伴Q扶持,_?jin)…?/font>
W二张:(x)依旧是爱?/font>
有h说爱情是一杯茶Q?/font>旉一久就淡了(jin)?br />我说爱情更像是一个煲Q时间越长越有滋…?/font>
W三张:(x)母爱
如果整个世界都抛弃了(jin)你,臛_q有母亲不会(x)攑ּ你?br />q记得儿时母亲的怀抱就是我最的天堂…?/font>
W四张:(x)U真
q样的笑Q这L(fng)q福Q只?/font>孩子才有…?/font>
W五张:(x)希望
长辈无微不至的关?br />只是希望下一代或者几代能够“过得比我好Q?/font>
W六张:(x)分n
地域不同Q?br />宗教信Ԓ不同
但是同一片蓝天下
有很多东西,是大家一直在׃n?br />比如Q空气:(x)Q?/font>
W七张:(x)自然
看到q张照片Q我有一U?/font>莫名的感?/font>Q想起小的时候淋雨的情景…?/font>
W八张:(x)野花
是的Q幸就是一朵野花,用自q生命展示丽Q这是q福?jin)…?/font>
W九(ji)张:(x)求知
q是一张老照片,初看的时?/font>感觉?j)酸Q逐渐的,发现?jin)求知的力量Q?br />破旧的教室,打满布丁的I却掩盖不?jin)?j)中对知识的(f)望,
比v那些一坐进教室头疼的城里孩子来讲Q他是q福的?/font>
W十张:(x)孩子
他们是落入凡间的_Q那W是可以让h忘记?ch)恼的…?/font>
ref:http://www.duwenzhang.com/wenzhang/shenghuosuibi/shenghuoganwu/20080913/18229.html
\0
NUL
) 字符?
\'
\"
\b
\n
\r
\t
TAB
)?
\z
mysql database < filename
?ASCII(26) 可能?x)引起问题生?
\\
\%
\_
注意如果在某些正文环境内使用 “\%?/font> ?“\_?/font>Q将q回字符?“\%?/font> ?“\_?/font> 而不???/font> ?“_?/font>?/p>
下面昄?SELECT
演示引号和{义是如何工作Q?
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "This\nIs\nFour\nlines";
+--------------------+
| This
Is
Four
lines |
+--------------------+
如果你想要把二进制数据插入到一个字W类型的字段?例如BLOB
)Q下列字W必ȝ转义序列表示Q?
NUL
\
'
"
你应该在M可能包含上述Ҏ(gu)字符的字W串中用{义函敎ͼ
另外Q很?MySQL API 提供?jin)一些占位符处理能力,q允怽在查询语句中插入Ҏ(gu)标记Q然后在执行查询时对它们l定数据倹{这PAPI ?x)自动?f)你从数g转换它们?
ref:http://blog.csdn.net/orafox/archive/2006/10/06/1322853.aspx