javascript杂记
javaScript(简称js)
javascript是一种在浏览器中执行的语言,是解释型语言,无需编译就可以运行。(js是弱类型,是动态类型),javaScript中没有类的语法,是用函数闭包模拟出来的;
好处
这样那怕语法有错误,没有语法错误的部分还是能正确运行。
在页面中的位置
Javascript代码放在<script>标签中,script标签可以放到<head><body>等任意位置,而且可以有不止一个script标签。JS是大小写敏感的!
执行顺序
放到<head>中的<script>在body加载之前就运行了,写在body中的<script>是随着页面的加载而一个个执行。
类型
除了可以在页面中声明javascript以为还可javascript写到单独的js文件中,然后通过<script src=”路径” type=”text/javascript”></script>引入到页面中,这样做的好处是多页面可以共享,减小网络流量。
Javascript在<a>链中的特殊用法
<a href=”javaScript:alter(“
Javascript中也是事件的概念。
javaScript中的null和underfined
null
null表示变量的值为空
underfined
underfined表示变量还没有指向任何对象,未初始化。
特性
在Js中值为0、null、underfined、或空字符串的表达式被解释为false。
javaScript中函数的定义
在javaScript中声明函数不需要声明返回值类型、参数类型。函数定义以function开头。
Eg:
function add(i1, i2) {
return i1 + i2;
}
注意:自定义函数不要和js内置。Document内置的方法重名,否则就会把系统的方法覆盖
匿名函数
Eg:
Var f =function(i1,i2){
Return i1+i2;
}
Alter(f(1,2));
直接声明一个匿名函数立即调用
Eg:
Alter(fuction(i1,i2){return i1+i2;}(10,12))
Javascript中如何定义一个类
Eg:
<script type="text/javascript">
function Ponser(name, age) {
this.name = name;
this.age = age;
this.sayHoll=function(){
alert("我叫"+this.name+"今年"+this.age+"岁");
}
}
var p = new Ponser("123", 12);
p.sayHoll();
</script>
注意:必须要声明类名,function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。var p1 = Person("tom", 30);//不要丢了new,否则就变成调用函数了
javaScript中的String 对象
length、属性 取字符串长度
charAt()方法 取第几个字符
indexOf(“内容”) 要查的内容第一次出现的位置
lastIndexOf(“内容”) 要查的内容最后一次出现的位置
subStr(start,length) 第一个参数表示从哪个位置截,第二个参数表示截几位
substring(start,end)第一个参数表示从哪个位置截(从0开始),第二个参数表示截的那位(从1开始)
split(“按什么字符分割”)分割字符串
match replace search 的用法
eg:
<script type="text/javascript">
var
str = "
alert(str.match(/\d{4}/)); //返回匹配的内容
//g表示全局匹配
alert(str.replace(/1991/g, 2001)) //返回替换后的字符串(注意全匹配)
//i 表示忽略大字母的大小写
str = "ed123ABCDasdlfkadsf"
alert(str.search(/abc/i)); //如果有匹配的返回0如果没有返回-1
</script>
Instanceof
//instanceof用于判断前面的对象是不是后面的类型
Eg:
var nub = "234";
alert(nub instanceof String)
JavaScript中的Array对象既可以当数字又可以当Dictionary 都是动态的
Eg:
<script type="text/javascript">
//数组()
var nub = new Array();
nub[1] = "tom";
nub[2] = "jike";
nub[3] = "lulu";
nub[4] = "xiaoxiao";
function sss() {
//用for循环是e不是一个对象而是键值
for(
var e in nub) {
//e表示键即
alert(nub[e]);
}
}
//字典
var dictionary = new Array();
dictionary["tom"] = "好人";
dictionary["jike"] = "坏人";
dictionary["lulu"] = "坏人";
dictionary["xiaoxiao"] = "坏人";
function yyyy() {
//第二种取值的方法
alert(dictionary.lulu);
//用for循环是e不是一个对象而是键值
for (var e in dictionary) { //e表示键即tom、jike、lulu等
//第一种取值的方法
alert(dictionary[e]);
}
}
</script>
通过类对象Prototype(原型,蓝本)[prəutətaip]设置扩展方法
Eg:
<script type="text/javascript">
//给String类中添加一个扩展方法
String.prototype.addname = function(name) {
if (!name) {
return this
}
return name + this + name;
}
alert("12313".addname(""))
</script>
注意:方法的声明要在使用扩展方法之前执行不传值的参数值就是undefined
Json对象
Eg:
<script type="text/javascript">
//向json赋值
var json = {
"classnub": "一班",
"students":
[
{ "name":"小花","age":15,"sex":"男"},
{"name":"小剑","age":18,"sex":"男"},
{"name":"祥子","age":20,"sex":"男"}
]
}
//取班级的值
alert(json.classnub);
//取班中的所有
var students = json.students;
for (var e in students) {
alert("学生:" + students[e].name + "性别:" + students[e].sex + "今年" + students[e].age + "岁");
}
</script>
Dom
Dom是html页面的模型,将每个标签都做为一个对象,javaScript通过调用Dom中的属性、方法就可以对网页中的各种元素进行编程控制。Dom就是一些让javaScript能操作HTML页面控件的类和函数
Dom和WinFrom一样,通过事件、属性、方法、进行编程。
DHTML=html+css+javaScript+Dom
Window对象
Windom对象代表当前浏览器窗口。
注意:使用window对象的属性、方法的时候可以省略window。
Window对象中的方法
alert() 弹出消息对话框
confirm()显示“确定”,“取消”对话框 按确定返回true 按取消返回false
navigate(“href”)从新导航到指定地址;
setInterval(“方法名称()”,时间)每隔一段时间执行指定代码,第一个参数为代码的字符串,第二个参数为间隔的时间(单位为毫秒),返回值是定时器标识
clearInterval(定时器标识)取消setInterval的定时执行,因为可以指定多个定时器,所以clearInterval要指定清除哪个定时器的标识,即setInterval的返回值
eg :
var te =setinterval(“alter(‘hell‘)”,1000);
clearInterval(te);
setTimeout也是定时执行,但不像setInterval那样是重复定时执行,值执行一次
eg:var timeoutId = setTimeout("alert('hello')", 2000);
clearTimeout和clearInterval用法一样
showModalDialog(“href”) 弹出模态对话框
showmodelessDialog(“href”)弹出非模态对话框
window的属性
window.location.href=”href” 重新导向新的地址,和navigate方法的效果一样
window.location.reload()刷新页面;
window.event:是非常重要的属性;用来获得发生事件时的信息,事件不局限于window对象的事件,所有元素的事件都可以通过event属性取到相关信息。
Window.event.altKey属性 返回值是bool表示发生事件时alt键是否被按下,类似的还有ctrlKey和shiftKey属性
Window.event.(clientX||clientY)发生事件时鼠标在客户区的坐标;
Window.event.(screenX||screenY)发生事件时鼠标在屏幕上的坐标;
Window.event.(offsetX||offsetY)发生事件时鼠标相对于事件源的坐标
Window.event.returnValue属性,如果将retrurnValue设置为false,就会取消触发事件的对象默认事件的处理(在超链接的onclick里禁止访问href页面)
Window.event.srcElement获得事件源对象(一般用在几个事件共享一个事件响应函数)
clipboardData对象对粘贴板进行的操作
clipboardData.ClearData(“text”)清空粘贴板
clipboardData.getData(“text”)读取粘贴板的值,返回粘贴板中的内容;
clipboardData.setData(“text”)设置粘贴板的值
eg:自动在复制的内容后添加版权声明
function modifyClipboard(){
clipboardData.setData(‘text’,clipboardData.getData(‘text’)+’版权信息’)
}
oncopy=“setTimeout(‘modifyClipboard()’,100)”
history对象 操作历史记录
window.history.back()后退;
window.history.forward()前进
window.history.go(-1);
body对象的事件
onload事件:网页加载完毕时触发(浏览器是一边下载文档,一边解析执行,可能会出现javascript执行时需要操作某个元素,这个元素还没加载,如果这样就要把操作代码放到body的onload事件中,或者可以把javascript放到元素之后。元素的onload事件是元素加载完毕式触发的,body onload才是全部加载完成
onunload事件:网页关闭(或者离开)后触发;
onbeforeunload:在网页准备关闭(或离开)后触发。
Eg:<body onbeforeunload="window.event.returnValue='真的要放弃发帖退出吗?'">