Javascript学习笔记(1)
JavaScript权威指南
1.初识
javascript+DOM
Document对象
javascript与HTML表单进行交互
对表单域进行读写:
表单html
<form name="loandata">
<input type="text" name="principal",size="12">
</form>
读写的javascript代码
var principal=document.loandata.principal.value;
document.loandata.principal.value=100;
打印:document.write();document.write(msg,"<br>");
告警:alert();
2.基本语法
a.大小写敏感,无类型。
b.句尾分号可省略,但还是加了比较好
c.注释://或者/**/
d.直接量:数字,"字符串"或'字符串',true,false,null。
e.javascript不区分整型和浮点型,都是浮点型。
f.toString(进制),可以将一个数字转换为指定进制的字符串。
g.isNaN()和isFinite()
h.字符串可以用双引号或者单引号,单与html的引号配合使用时,需要错开使用。如:
<a href="" onclick="alert('hello')">click me</a>
i.函数定义,需要使用到function关键字。不需要定义返回的类型。
j.具有值类型和引用类型
k.javascript支持垃圾回收
l.全局对象&调用对象:最外层程序本身,就是全局对象。程序全局变量就是这个全局对象的成员。可以在全局层次(全局对象层次)使用this来访问全局变量(即全局对象的成员)。在具体的客户端中,这个全局对象就是Window对象。调用对象就是局部变量所附属的对象。
m.运算符。in:一个字符串是否为一个对象的属性。
instanceof:一个对象是否为一个类的实例。相当于c#中的is
typeof():输入一个变量,返回一个字符串,指名其是什么类型,有点像一个函数。(c#的typeof是输入一个类型,返回一个system.type的实例)
n.javascript的switch语句中,case支持运行时变量,而c,c#等必须是编译时刻常量
o.for in语句:for(变量 in 对象){},将访问某个对象的每个属性名。(与c# 中的foreach不同,c#的foreach是访问集合的每个元素)。可以在语句中利用对象的属性名称访问属性:对象[属性名称](该属性名称就是for中的变量)。如:for(var prop in my_object)
{
document.write("name:"+prop+",value"+my_object[prop]);
}
p.javascript的异常处理
try
{}
catch(ex)
{}
finally
{
}
ex没有类型。
r.函数的嵌套定义:
函数的动态定义:(匿名函数)
var f=new function("x","y","return x*y");
函数直接量
函数是一种数据类型:类似函数指针(委托)
函数的Arguments对象:在函数内部通过arguments访问传入的参数,可以用于编写接受任意个参数的函数。参数就从arguments[i]中获得。另外,arguments.callee就是函数自己。
函数定义中,形参前不需要加类型或者var。
可以得到函数定义时候需要的参数个数:函数名称.length,或者arguments.callee.length,可以与arguments.length比较,一个是期望的参数个数,一个是实际的参数个数
s.对象
对象直接量
对象属性名称的枚举(for in)
定义一个自定义对象只需要定义其构造函数
t.数组
数组的定义 var a=new Array();
var a=new Array(1,2,3,4,5);
var a=new Array(10);//10个元素
var a=[1,2,3,4,5];//数组直接量
u.正则表达式
可以使用new RegExp来定义,也可以用直接量 var pattern=/s$/来定义
其正则表达式符号规则是Perl的子集.
常用符号
数字和字母:代表数字和字母本身
[abc]匹配a或b或c(注意:[]内的表达式,只匹配一个字符)
[^abc]匹配非abc的其他所有(^对整个[]起作用)
[a-zA-Z0-9]对所有大小写字母和数字匹配,也可以使用其他转义的代码来表示一个范围:
\w:[a-zA-Z0-9_]
\W:[^a-zA-Z0-9_]
\d:[0-9]
\D:[^0-9]
表达重复几次:重复项的说明在模式表达式的后面
/\d{2,4}/:至少2个数字,至多4个数字
/\w{3}\d?/:正好3个字符,数字一个或者没有
?:一个或者没有{0,1}
+:一次或者多次{1,}
*:0次或者多次{0,}
3.客户端的javascript
执行过程是浏览器HTML解析过程的一部分。按照顺序执行。如果脚本中有document.write()方法,那么输出的文档被插入到</script>之后,当教本运行结束后,由HTML解析。浏览器会在执行教本的时候停止html的解析。
重要的对象
window对象:
frames
alert():阻塞,无返回
confirm():阻塞,返回true,false
prompt():阻塞,返回字符串
setTimeout() :调用一次。setInterval重复调用,直到clearInterval
window.location.replace(url):定位到其他页面
status:控制状态栏中显示的数据
window.open():打开新浏览器窗口。
document对象:
document.write()
document.writeln()
open()
close()
<img>用document.images[]访问
<a>用links[]访问
<applet>用applets[]访问
访问表单元素:
<form>用document.forms[]访问,具有elements[]属性:document.forms[1].elements[2]
访问表单中的元素,除了可以通过elements指定序号,也可以直接指定其名称,如
document.form1.OperatorLogin$UserName.focus();//是登录页面中,将form1中的OperatorLogin$UserName获取焦点。
表单的验证:form的onsubmit事件。即使某个button是服务端控件,但是如果表单的onsubmit返回false,点击了该服务端控件后,也不会提交表单,从而不会激发服务端事件。
问题;
<input type="submit" value="submit" />也会回调
具体是什么?如何在服务器端捕捉该事件?