JS总结

二、DOM 事件

1、Js中的事件

行为,结构,样式分离的页面

一般事件 onclick 鼠标点击时触发此事件

ondblclick 鼠标双击时触发此事件
onmousedown 按下鼠标时触发此事件
onmouseup 鼠标按下后松开鼠标时触发此事件
onmouseover 当鼠标移动到某对象范围的上方时触发此事件
onmousemove 鼠标移动时触发此事件
onmouseout 当鼠标离开某对象范围时触发此事件
onkeypress 当键盘上的某个键被按下并且释放时触发此事件.
onkeydown 当键盘上某个按键被按下时触发此事件
onkeyup 当键盘上某个按键被按放开时触发此事件

①、绑定事件的3种方式

1: 直接写在html标签内声明

<div id="school" onclick="t();">

这种写法最古老,兼容性最强.属于DOM的lev0级的标准.这个效果,等同于在点击div的时候,执行"t();"这一语句,

在全局范围内执行,因此,t函数内部的this指代全局对象-->window 想操作被点击的DOM对象,用this就不行了.

 第2种绑定方式:

DOM对象.onclick = function () {}

这种绑定是把一个DOM对象onclick属性赋值为一个函数,

因此,函数内部的this直接指向该DOM对象.

在这种绑定方式中,只能给一个事件,绑定一个处理函数

即 .onclick = fn1;  .onclick = fn2;

最终的效果, 是.onclick = fn2;

如果用函数来调用其他函数的形式

例.onclick = function () {fn1(),fn2()}

那么此时, fn1,fn2中的this又指向window.

如何绑定多个函数, 并令this指向DOM对象

第三种绑定事件的方法:

DOM lev3的事件绑定标准

添加和去除监听事件.

addEventListener('事件',函数);  // 第一个参数事件参数, 没有前缀"on", w3c的标准,IE不支持

注意点1: 如果添加了多个事件处理函数, 按"添加时的先后顺序来执行"

注意占2: 事件处理函数中的this 指代 DOM节点自身 (w3c标准)

注意点3: 第一个事件参数,一律把事件名称的'on'去掉 (w3c标准)

 

去除绑定

removeEventListener('事件',函数)

IE下绑定事件与解除事件的方法

attachEvent('事件',函数)   // 注意: 事件 要加on

detachEvent('事件',函数) // 事件依然要加on

总结一下:

W3c addEventListener 与IE的attachEvent()的不同

1: 函数名不同

2: 事件名不同, IE下要加on,w3c不加on

3: 加事件后的执行顺序不同, w3c按绑定事件的顺序来执行, 而IE6,7,8,是后绑定的事件先发生.

4: this的指向, w3c中,绑定函数中的this指向 DOM对象, 而IE6,7,8中,指向window对象

三、事件的捕捉与冒泡模型

在w3c的模型中,

addEventListener 支持 第3个参数来声明事件的模型为冒泡还是捕捉.

如果声明为 true,则为捕捉方式

如果声明为false, 或者不声明, 则为冒泡方式

注意: IE的attchEvent 没有第3个参数,不支持捕捉模型

事件对象的概念:

当事件对应的函数被触发时, 函数会接收到一个事件参数, // w3c标准

例 xx.onclick = function (ev) {alert(ev)}

点击后,ev 参数就代表单击那一瞬间的"各个参数",以一个对象的方式传过去.

对于IE, 当事件发生的瞬间,事件对象赋值给window.event属性

 四、事件的中断

如何中断事件的传播???????

在w3c:  事件.stopPropagation();

在IE中,  事件对象.cancelBubble = true;

cancelBubble = true //IE取消冒泡

stopPropagation(); // w3c取消冒泡

 returnValue = false; // IE取消事件效果

preventDefautl() ;// w3c取消事件效果

取消事件的默认效果

事件对象.preventDefault();  // 阻止事件的默认效果, w3c方法

事件对象.returnValue = false; // 设置returnValue 的属性值为false;

五、Js 作用域链(是指AO链)

1:参数

2:局部变量声明

3:函数声明

* 函数声明与函数表达式的区别

表达式必有返回值,把返回值(即匿名函数)赋给了一个变量.

此时 就是普通的赋值过程.

①、js并不是一句一句顺序执行的,先进行词法分析

This, 与 arguments

当一个函数运行的时候,函数内部能引用的变量有这么几种

AO、arguments、this

对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找

arguments是什么?

答:1:arguments是收到的实参副本

2:收到实参收集起来,放到一个arguments对象里

在词法分析中, 首先按形参形成AO的属性,值为undefined

当实参传来时, 再修改AO的相应属性.

t(a,b,c){}, 

调用时: t(1,2,3,4,5) 个参数

此时 , AO属性只有a,bc,3个属性, arguments里有1,3,3,4,5, 所有的值

对于超出形参个数之外的实参, 可以通过arguments来获得

3:arguments 的索引 从 0, 1,2,....递增,与实参逐个对应

4:arguments.length 属性代表实参的个数

5:Arguments一定不是数组, 是长的比较像数组的一个对象,虽然也有length属性

6:Arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,

无法引用到外层的arguments

This是谁

This是指调用上下文

针对函数的应用场景来讨论

函数的4种调用方式

1:函数方式

直接调用函数名,或函数表达式的返回值,

This指代全局对象,window

2:属性方式(对象方法方式)

This指代该对象(方法的属主)

3:构造器方式

通过 new 函数     名() , 来创建对象

在js里, 构造函数与对象的关系比较松散,

对象就是"属性->值"的集合

构造器的作用,是制造一个对象,把this指向该对象,

4:call,apply方式

函数本身即是对象,对象就有方法

函数名.call(对象,参数1,参数2,参数3);

以fn.call(obj,'a','b');

实际效果相当于

1:fn内部的this指向了obj

2:fn('a','b');

Apply的效果与call一样, 只不过传参时,把所有参数包装在数组里,传过去.

例 fn.call(obj,'a',' b')  ===> fn.apply(obj,['a','b']);

还有一种改变this的方法

With 语句

With(对象) {

语句1

语句2

.....

}

在with内部的语句,就把参数中的对象当成的上下文环境.

六、词法分析

js执行顺序
1:词法分析阶段
先把接收到的参数放到激活对象上
 
再对函数体中代码作分析
a: var xx = yy;
做法:声明一个xx属性在激活对象上,
但不赋值,如果已经有xx,则不无动作.
b:function ttt() {
}
做法:直接声明ttt属性,
且内容是函数体
 
2:执行语句阶段
 

六、Js面向对象

 属性,方法-->对象

"类"能做到封装,继承,多态,

"类"的静态方法

1: js中的对象是什么?

答:js的对象就是键值对的无序集合

2:种创建对象的方法

①、通过字面量来创建对象

例:{age:22,hei:180}

{}->空对象,没有属性

②、通过 new Object([value]);

通过构造函数来创建对象(和第2种没区别,因为Object就是系统内建的构造函数)

七、Js面向对象中的封装

javascript语言中,没有现成的私有属性/方法机制,
但可以通过作用域来模拟私有属性,私有方法
 

对象的属性外界是可读可写的, 如何来达到封装的目的?

答:通过闭包+局部变量来完成

在构造函数内部声明局部变量, 和普通方法,

因为作用域的关系,只有构造函数内的方法,才能访问到局部变量.

而方法对于外界是开放的,因此可以通过方法来访问局部变量.


下面参考的是前端小个的博客js总结


事件触发总结:

1、onmousedown
定义:onmousedown事件会在鼠标按键被按下时发生

2、onmouseup
定义:onmouseup事件会在鼠标按键被松开时发生

3、onmousemove
定义:onmousemove事件会在鼠标指针移动时发生
支持该事件的js对象:document
但是onmousemove默认情况下没有任何对象的一个事件;
因为鼠标移动频繁发生。

4、onmouseover
定义:onmouseover事件会在鼠标指针移动到指定的对象上时发生

5、onmouseout
定义:onmouseout事件会在鼠标指针移出指定的对象时发生

6、onclick单击事件
定义:onclick事件和onmousedown不同。单击事件是在同一元素上发生了
鼠标按下时间之后发生了鼠标放开时间是发生的。
理解:鼠标按下抬起以后事件才发生。

7、onfocus光标移入事件
定义:onfocus事件在对象获得焦点时发生

8、onblur光标移出事件
定义:onblur事件会在对象失去焦点时发生

9、oncontextmenu右键事件
鼠标按下右键的时候发生

10、onsubmit
onsubmit事件会在表单中的确认按钮(submit)被
点击是发生。

11、onkeydown
onkeydown事件会在用户按下一个键盘按键时发生

12、onkeyup
obkeyup事件会在键盘按键被松开时发生

13、onload
onload事件会在页面或图像加载完成后立即发生

14、onscroll
onscroll事件拖动滚动条时发生

15、onresize
onresize事件会在窗口或框架被调整大小时发生

16、onmousewheel
onmousewheel事件ie、chrome下鼠标滚轮滚动时发生

17、DOMMouseScroll
DOMMouseScroll事件是标准下(ff)鼠标滚轮事件,
鼠标滚轮滚动时发生

18、onreadystatechange
onreadystatechange事件:当请求被发送到服务器时;
我们需要执行一些基于响应的任务。每当readyState
改变时,就会触发onreadystatechange事件。
readyState属性存有XMLHttpRequest的状态信息。
在onreadystatechange事件中,我们规定当服务器响应
已做好被处理的准备时所执行的任务。


19、attachEvent绑定事件
ie下的绑定事件,2个参数,第一个什么事件,第二个执
行函数(倒序执行)。注意this指向
如:obj。attachEvent(‘onclick’,aaa)
function aaa(){}

20、addEventListener绑定事件
标准下的绑定事件,3个参数。1什么事件(不加ON),
2执行函数 3、一个布尔值。true是捕获阶段,false是
冒泡阶段

21、event对象指事件的状态

简单的:一个 存了 事件详细信息的东西


网上较专业的:Event对象代表事件的状态,比如事件在其中发生的元素
键盘按键的状态,鼠标的位置,鼠标按钮的状态,通常
与函数结合使用。

22、clientX、clientY
在Event对象下获取鼠标位置

23、cancelBubble =true
在Event对象下取消冒泡事件

24、keyCode
在Event对象下获取用户按下键盘的哪个按键

25、preventDefault()
阻止默认默认事件的绑定写法

26、return false
阻止默认时间的普通写法

 

二、DOM 27-46
27、getElementById
通过id获取某一个元素

28、getElementsByTagName
通过标签名获取一组元素的集合

29、childNodes
获取子节点,但是标准下会获取空白节点
获取第一级子元素的节点

30、nodeType
节点类型
1)元素节点(标签)2)文本节点(空白节点)

31、children
获取子节点,但是没有兼容性问题
获取第一级子元素的节点

32、firstElementChild || firstChild
标准下:firstElementChild ie不支持
ie下是 firstChild
获取子元素里的第一个

33、lastElementChild || lastChild
标准下:lastElementChild ie不支持
ie下是 lastChild
获取子元素里的最后一个

34、nextElementSibling || nextSibling
标准下:nextElementSibling ie不支持
ie下 nextSibling
获取子指定元素的下一个兄弟节点

35、previousElementSibling || previousSibling
标准下: previousElementSibling ie不支持
id:previousSibling
获取指定元素的上一个兄弟节点

36、parentNode
获取父节点

37、offsetParent
获取有定位的父节点,都没有定位的话父节点就是body

38、offsetWidth-----有问题
获取元素的实际宽度(width+padding+border)

39、offsetHeight
获取元素的高度(height+padding+border)

40、clientWidth
获取元素的内部宽度(width+padding)

41、clientHeight
获取元素的内部高度(height+padding)

42、createElement(标签名)
创建一个节点

43、appendchild(节点)
追加一个节点

44、insertBefore(节点,原有节点)
在已有的元素前面插入

45、removeChild(节点)
删除一个节点

46、replaceChild(节点,已有节点)
替换已有的节点

 

三、BOM操作: 47-53
47、window。open()
打开窗口

48、window。close()
关闭窗口,标准下不支持

49、window。location
获取浏览器地址

50、window。location。href
获取整体的网址

51、window。location。search
获取问号?后面的内容,包括问号

52、window。location。hash
获取警号#后面的内容,包括警号

53、window。location。reload()
自动刷新,定时器配合

53、window。navigator。userAgent
获取浏览器信息

 

四、js基础: 54-126
54、if else 如果。。。。否则。。。

55、switch 如果

56、?: 三木,就是如果。。。否则。。。

57、for(){} for循环

58、for in

59、while=for

60、continue 终止本次循环 
if(i=2)continue 跳过这个条件

61、break 终止当前循环 
if(i=3)break 结束本次

62、undefined 未定义

63、null=========?

64、=== 只比较,不转换类型

65、== 不仅比较,而且还会将两个东西转换成相同的类型

66、= 赋值

67、! 就是 不 的意思

68、setTimeout 
设置定时器,2秒钟后,执行一次,并且只执行一次,---定时炸弹

69、clearTimerout
清楚定时器,清理setTimerout

70、setInterval
设置定时器,每两秒执行一次

71、clearInterval
清楚定时器,清理setInterval

72、arguments
实参的元素集合

73、call
改变this取向
fn名.call(this,‘black’)第一个参数是函数之行的环境,
从第二个参数开始,才是函数的真正参数

oDiv.onclick = function(){
toChange.call(this,'black'); 
};
function toChange(sColor){
this.style.background = sColor;
}

74、apply
改变this取向,
function show(a, b)
{
alert('this是:'+this+'\na是:'+a+'\nb是:'+b);
}
show(12, 8);
show.apply(document, [12, 8]);
第二个参数是以数组形势存在的

75、callee ===============?调用这个函数自身的


76、var arr=【】; 声明一个数组

77、var arr=new Array() 声明一个数组

78、push 
向数组的末尾添加一个或更多元素,并返回新的长度

79、pop
删除数组最后一个元素,并返回这个元素

80、shift
删除数组第一个元素,并返回这个元素

81、unshift
向数组的开头添加一个或多个元素,并返回新的长度

82、splice
删除元素,并向数组添加新的元素

83、join()
把数组的所有元素放入一个字符串。元素通过指定
的分隔符进行分隔

84、sort()
对数组的元素进行排序

85、concent----concat()?
连接两个数组或者多个数组,并返回结果

86、split
分割字符串,获得数组

87、substring
获取字符串
包括开始不包括结束

88、indexOf
从前往后检索字符串

89、charAt
获取某个字符

90、var re=//; 声明一个正则对象

91、var re=new RegExp() 声明一个正则对象

92、search 查找一个字符串,只找第一次出现的位置

93、month ===============?
match-匹配符合正则的东西,挑东西返回数组


94、test 用正则检验字符串是否符合它所规定的规则

95、replace 替换,把符合规则的东西替换成字符串

96、量词:{n,m}至少出现n次,最多出现m次
+许多 
* {0,} 0到任意次
?零次或者一次{0,1}
{n,}最少n次,最多不限
{,m}最少不限最多m次
{n}正好n次

97、字符类:
1[abc]2 1和2中间出现a或b或c
[^0-9]排除数字以外所有都可以
[a-z]所有的英文
[0-9]所有的数字

98、标识: i 忽略大小写 g 全局匹配

99、首尾: ^ $

100、转义:
\d 查找数字 [0-9]
\D 除了数字[^0-9]
\s 空白
\b 单词边界
\w 数字字母下划线--用户名
. 任意字符
\. 代表.本身

101、var oDate= new Date() 获取当前时间

102、getHours() 获取小时

103、getMinutes() 获取分钟

104、getSeconds() 获取秒

105、getFullYear() 获取年

106、getDay() 获取星期

107、getDate() 获取当前的时间日期

108、setDate() 设置一个月的某一天

109、var oImg=new Image() 创建一个image对象

110、什么叫ajax
通过XMLHttpRequest与服务器通信,进行无刷新操作

ajax采用的是异步请求

111、同步与异步的区别

同步就是同一时间做一件事
异步就是同一时间做多件事

112、ajax的交互方式
1)发送数据并返回 ()(注册)
2)只发送不返回 ()========?例子
3)不发送只返回 (股票)

113、post与get的区别
1)发送方式不一样:get加载网址问好后面的
post把数据放在一个传输体中发送上去的

2)安全不一样
post相对安全,get不安全

3)网址长度不一样
ie下get网址超过2048字节将被截断
post没有上限

4)缓存问题
get可以缓存网址,post不会缓存网址

5)用途不一样
get:查询数据,post修改数据

114、发送数据是什么样的?
串联化数据:key1=value1&key2=value2

115、返回数据是什么样的?
返回的是字符串

116、跨域:jsonp?
(利用script标签跨域)
在头部创建个script标签,
改变script标签中src

117、ajax的编写步骤?
1)创建ajax对象(要有手机)
2)链接服务器open(拨号)
3)监听数据返回onreadystatechange(听)
4)发送数据send(说)
5)close(忽略)(挂了)

118、json怎么取?=========?
通过串联化数据

119、什么是对象?
对象是一个整体,对外提供一些操作。||
黑盒子,看不到内部的样子,
能看到表面的按钮

120、什么是面向对象?
使用对象时,只关注对象提供的功能,
不关注其内部细节,比如jQuery ||
使用一个东西的时候,不去管内部是
怎么做的,只用好它的功能

下面是整理出来的一些函数,方便大家的学习和使用

/**
function obj$(id)                       根据id得到对象
function val$(id)                       根据id得到对象的值
function trim(str)                      删除左边和右边空格
function ltrim(str)                     删除左边空格
function rtrim (str)                    删除右边空格
function isEmpty(str)                   字串是否有值
function equals(str1, str2)             比较两字符串是否相等
function equalsIgnoreCase(str1, str2)   忽略大小写比较两个字符串是否相等
function isChinese(str)                 判断是否中文
function isEmail(strEmail)              是否电子邮件
function isImg(str)                     是否是一个图片格式的文件jpg|jpeg|swf|gif
function isInteger(str)                 是否是一个整数
function isFloat                        是否是一个浮点数
function isPost(str)                     是否邮编(1位至6位
function isMobile(str)                  是否是手机号
function isPhone(str)                   是否是电话号码必须包含区号,可以含有分机号
function isQQ(str)                      是否合法的QQ号码          
function isIP(str)                      是否是合法的IP
function isDate(str)                     是否日期类型(例:2005-12-12)
function isIdCardNo(idNumber)           是否是合法的身份证号
**/ 
/**
 * 替换
 * @param {Object} str
 * @param {Object} oldStr
 * @param {Object} newStr
 * @return {TypeName} 
 */ 
function repalce(str, oldStr, newStr) { 
    var reg = eval_r("/" + oldStr + "/g"); 
    return str.replace(reg, newStr); 
} 
 
/**
 * 左边截取
 * @param {Object} str
 * @param {Object} n
 * @return {TypeName} 
 */ 
function left(str, n) { 
    if (str.length > 0) { 
        if (n > str.length) 
            n = str.length; 
        return str.substr(0, n); 
    } else { 
        return; 
    } 
} 
 
/**
 * 右边截取
 * @param {Object} str
 * @param {Object} n
 * @return {TypeName} 
 */ 
function right(str, n) { 
    if (str.length > 0) { 
        if (n >= str.length) 
            return str; 
        return str.substr(str.length - n, n); 
    } else { 
        return; 
    } 
} 
 
 
 
function strip(str) { 
    if (typeof str == 'string') 
        return str.replace(/^\s+/, '').replace(/(^\s*)|(\s*$)/g, ''); 
} 
 
function stripTags(str) { 
    if (typeof str == 'string') 
        return str.replace(/<\/?[^>]+>/gi, '').replace(/(^\s*)|(\s*$)/g, ''); 
} 
/**
 * 判断某个字符的长度在s和l之间
 * @param {Object} str
 * @param {Object} s
 * @param {Object} l
 * @return {TypeName} 
 */ 
function isLen(str, s, l) { 
    str = Trim(str) 
    if (str.length > s && str.length < l) { 
        return true; 
    } else { 
        return false; 
    } 
} 
 
/**
 * 是否为数字
 * @param {Object} str
 * @return {TypeName} 
 */ 
function isNumber(str){ 
    if (/^\d+$/.test(str)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 
 
 
 
function isLetters(str){ 
    if (/^[A-Za-z0-9]+$/.test(str)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 
 
function isLetter(str){ 
    if (/^[A-Za-z]+$/.test(str)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 
 
function isUpper(str){ 
    if (/^[A-Z]+$/.test(str)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 
 
function isLower(str){ 
    if (/^[a-z]+$/.test(str)){ 
        return true; 
    }else{ 
        return false; 
    } 
} 
 
 
/**
*根据对象的id得到对象
*id:对象的id
*/ 
function obj(id) 
{ 
    return document.getElementById(id); 
} 
 
/**
*根据对象的id得到对象的值
*id:对象的id
*/ 
function val(id) 
{ 
    var obj = document.getElementById(id); 
    if(obj !== null) 
    { 
        return obj.value; 
    } 
    return null; 
} 
 
/**
*去掉字符串的前后空格
*str:将要除去空格的字符串
*/ 
function trim(str) 
{ 
    return str.replace(/(^\s*)|(\s*$)/g, ''); 
} 
 
/**
*去掉字符串前的空格
*str:将要除去空格的字符串
*/ 
function ltrim(str) 
{ 
    return str.replace(/^\s*/g,''); 
} 
 
/**
*去掉字符串后的空格
*str:将要除去空格的字符串
*/ 
function rtrim(str) 
{ 
    return str.replace(/\s*$/,''); 
} 
 
/**
*字符串是否有值
*str:要检测的字符串
*/ 
function isEmpty(str) 
{ 
    if(str != null && str.length > 0) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*比较两个字符串是否相等
*str1:要比较的字符串1
*str2:要比较的字符串2
*/ 
function equals(str1, str2) 
{ 
    if(str1 == str2) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*忽略大小写比较两个字符串是否相等
*str1:要比较的字符串1
*str2:要比较的字符串2
*/ 
function equalsIgnoreCase(str1, str2) 
{ 
    if(str1.toUpperCase() == str2.toUpperCase()) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是中文
*str:要检测的字符串
*/ 
function isChinese(str) 
{ 
   var str = str.replace(/(^\s*)|(\s*$)/g,''); 
   if (!(/^[\u4E00-\uFA29]*$/.test(str) 
           && (!/^[\uE7C7-\uE7F3]*$/.test(str)))) 
   { 
      return false; 
   } 
   return true; 
} 
 
/**
*是否是Email
*str:要检测的字符串
*/ 
function isEmail(str) 
{ 
    if(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str)) 
    { 
        return true 
    } 
    return false; 
} 
 
/**
*是否是图片格式文件
*str:要测试的文件名
*/ 
function isImg(str) 
{ 
    var objReg = new RegExp("[.]+(jpg|jpeg|swf|gif){1}quot;, "gi"); 
    if(objReg.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是一个整数
*str:要检测的字符串
*/ 
function isInteger(str) 
{ 
    if(/^-?\d+$/.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是一个浮点数
*str:要检测的字符串
*/ 
function isFloat(str) 
{ 
    if(/^(-?\d+)(\.\d+)?$/.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是邮编
*str:要检测的字符串
*/ 
function isPost(str) 
{ 
    if(/^\d{1,6}$/.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是手机号码
*str:要检测的字符串
*/ 
function isMobile(str) 
{ 
    if(/^1[35]\d{9}/.test(str)) 
      { 
          return true; 
      } 
    return false; 
} 
 
/**
*是否是电话号码
*str:要检测的字符串
*电话号码必须有区号,可以有分机号
*/ 
function isPhone(str) 
{ 
    if(/^(0[1-9]\d{1,2}-)\d{7,8}(-\d{1,8})?/.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是合法的QQ号码
*str:要检测的字符串
*/ 
function isQQ(str){ 
    if(/^\d{5,9}$/.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是合法的IP
*str:要检测的字符串
*/ 
function isIP(str){ 
    var reg = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/; 
    if(reg.test(str)) 
    { 
        return true; 
    } 
    return false; 
} 
 
/**
*是否是一合法日期
*str:要检测的字符串
*/ 
function isDate(str) 
{ 
    var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/; 
    if(reg.test(str)) 
    { 
        return true; 
    } 
    return false;   

你可能感兴趣的:(JS总结)