JavaScript学习笔记

 

 

* 正则表达式

js中使用正则表达式可以通过RegExp对象或String对象,其中RegExp对象定义正则表达式有两种方式,一是普通方式,二是构造函数的方式。

RegExp对象解析:

普通方式:

语法:var reg=/表达式/附加参数

如:var reg=/ab+/;

构造函数方式:

语法:var reg=new RegExp(“表达式”,”附加参数”),也可以不写附加参数。

如:reg=new RegExp("[0-9]");

reg=new RegExp("[0-9]","g");

附加参数:用来扩展表达式的含义,主要有以下三个参数。

g:代表可以进行全局匹配

I:代表不区分大小写匹配

m:代表可以进行多行匹配

RegExp对象的方法和属性:   

test():检索字符串中正则表达式匹配的值,如果找到了返回true,否则返回false;

exec():检索字符串中正则表达式匹配的值,如果找到了则返回匹配值,否则返回空字符串;如果字符串中有多个正则表达式匹配的值,那么exec方法会将这些值全部返回,各值之间用","连接;返回的值是最后一次正则表达式匹配得到的值。

如:reg=/(a|b)jj/;->如字符串为"ajj",那么结果为"ajj,a",返回的值是最后一次正则表达式匹配得到的值。

 reg=/(1|2){2,3}/;->1或2出现至少2次,至多3次;如111,121,212,如果字符串为"221",那么返回的值为"221,1"。

 

global:用于确定正则表达式中是否具有标志g,返回true或false

ignoreCase:同上所述,是否具有标志i

multiline:同上所述,是否具有标志m

语法:

正则表达式对象实例.test(字符串)

正则表达式对象实例.exec(字符串)

String对象解析:

match():检索字符串中指定的值,如果找到了返回匹配值,否则返回null;

语法:字符串对象.match(字符串或RegExp对象)

replace():替换与正则表达式相匹配的值

语法:字符串对象.replace(字符串或RegExp对象(被替换),”替换的字符串”)

split():把字符串分割为字符串数组

字符串对象.split(字符串或RegExp对象,n)

n为限制数组中元素的个数,如果不设置n,则没有限制。

正则表达式中常用的符号和用法:

符号

描述

/.../

代表一个模式的开始和结束

^

匹配字符串的开始

$

匹配字符串的结束

\s

任何空白字符

\S

任何非空白字符

\d

一个数字字符

\D

除了数字之外的任何字符

\w

一个数字、下划线或字母

\W

任何非\w字符

.

除了换行符之外的任何字符

+

匹配前一项1次或多次

*

匹配前一项0次或多次

匹配前一项0次或1次

{}

可以没上限,不能没下限

{n}->匹配前一项n次

{n,m}->匹配前一项至少n次,至多m次

{n,}->匹配前一项n次或更多次

{,n}->错误写法,得不到任何结果

[]

[abcd]->a、b、c、d中任何一个字符

[a-z]->a至z中任何一个字符

[a-zA-Z]所有英文字母

[9-0]->错误写法,会导致字符集越界,js出错

[^0-9]不能是0至9中任何一个字符

|

hi|hello->匹配hi或hello

()

a(b|c)d->a和d中间为b或c

注意:

 正则表达式如果匹配正确,那么不会再往下匹配了。如果想要将通配符转化为普通字符来匹配,那么需要使用反斜杠\来进行字符转义。如reg=/\./;就是将点号变为普通字符。

 

常用正则表达式

 

 

 

* prompt()

prompt()的第二个参数如果省略,那么就会在文本框中出现“undefined”;如果单击取消或关闭按钮,就会返回null;如果单击确定,就会返回输入文本框中的字符串。

 

* 数组

这个里面的数组是一个可以包含任何类型的数组,例如在一个数组中可以放不同类型的元素;

为数组元素赋值有以下几种写法:

var fruit=new Array(2);

fruit[0]="苹果";

fruit[1]="橘子";

 

var fruit=new Array("苹果","橘子");

 

var fruit=["苹果","橘子"];

 

输出fruit,结果为:苹果,橘子;

 

有一种错误写法:var fruit=("苹果","橘子");这样写它会把最后一个字符串(橘子)拆分成字符串数组,但是遇到不是字符串的就会出错,如var fruit=("苹果","橘子",12345);fruit.length=undefined;但是输出fruit,结果却为12345;

 

<script type="text/javascript">

var fruit=("苹果","橘子");

    for(var i in fruit){

      document.write( fruit[i])

}

document.write(" "+fruit.length);

</script>

 

输出:橘子 2

 

如果不为字符串定义定义长度,如var fruit=new Array();那么长度就会默认为0,fruit[100]=undefined;这个数组中所有元素的值都为undefined;

 

* parseInt()、parseFloat()、isNaN()

var num=parseInt("+-0sdf");

  document.write(num);

输出:NaN

 

var num=parseInt("-0sdf");或var num=parseInt("+0sdf");

  document.write(num);

输出:0

 

var num=parseInt(".0sdf");

  document.write(num);

输出:NaN

 

var num=parseInt("11.23sdf");

  document.write(num);

输出:11

 

parseFloat()方法与parseInt()大致相同,有一些区别:

var num=parseFloat(".0sdf");

  document.write(num);

输出:0

 

var num=parseFloat(".1sdf");

  document.write(num);

输出:0.1

 

var num=parseFloat("11sdf");

  document.write(num);

输出:11

 

var num=parseFloat("11.23sdf");

  document.write(num);

输出:11.23

 

isNaN()方法:

默认值为true

 document.write(isNaN("12.2")),结果为false,它会把字符串转化为数值;

 

*

数组和null是object类型的,NaN是number类型的;

 

* 自定义函数

function show(n){},不能写成function show(var n){};

 

* onload()

在网页中,每次前进或后退都会刷新页面;

onload和location是打开一个新页面(可以前进和后退的)

onload必须等待网页中所有的内容(包括脚本)加载完毕后才能执行,onload打开新页面是因为函数;

如:

function show(){

var today=new Date();

document.write(today)

}

      location='两数运算.HTML'     

</script>

</head>

 

<body onload= show()>

它会先链接到'两数运算.HTML',这个onload就永远都出不来了。

 

* close()

close()这个方法如果在<script>标签中可以执行,但是直接在HTML标签中写就必须写成window.close();

关闭窗口时,只关闭本窗口。

 

 

*

在函数中输出文字到屏幕上(与body中的HTML代码无关),他就会打开一个新页面(可以前进或后退)显示内容。

如:

<script type="text/javascript">

function changeLink(){

 document.write("khkhjkhkjhk");

}

 

</script>

 

</head>

 

<body >

<input name="b1" type="button" value="改变层内容" onclick="changeLink()"/>

</body>

 

*

document.getElementById()

document.getElementsByName()

document.getsElementByTagName()

以上三个方法必须写在函数里才能被使用。其中document.getElementById()是返回对拥有指定ID的第一个对象的引用,如一个div的对象的引用为[object HTMLDivElement];而p的对象的引用为[object HTMLParagraphElement];如果找不到,就会返回null。

如:

<script type="text/javascript">

function show(){

document.write(document.getElementById("all").checked);

}

</script>

 

</head>

 

<body>

<input id="all" type="checkbox" value="1" onclick="show()"/>全选<br />

</body>

 

不能直接输出document.getElementsByName("all")和document.getElementsByTagName("input");系统会提示拒绝访问。

:

var s= document.getElementsByName("all");

document.write(s);

直接输出document.getElementById("all"); 结果会是null;

如:

var s= document.getElementById("all");

document.write(s);

 

*

日期的getDay()返回的值介于0~6之间,getMonth()返回的值介于0~11之间。

 

*

<h1>服饰</h1>哈哈,只有服饰变成1号字体;

<h1>服饰<h1>哈哈,服饰和哈哈都变成1号字体;

 

*

可见性过滤选择器:hidden,只对display有用,对visibility没用。

display:none;是将元素隐藏,并且元素会从页面上移走。

visibility:hidden;也是将元素隐藏,但是元素还是在原来的位置,只是看不见而已。

 

*

toggle()方法叫做套索;

toggle()方法可以切换元素的可见状态,如果被选元素可见,则隐藏这些元素,反之。

toggle(true)显示被选元素,反之。

toggle(function1,function2),单击被选元素调用function1,再单击被选元素调用function2,一直循环。

$("h1:gt(0)").toggle();这个方法也可以将下标大于0的元素都隐藏,并且元素会从页面上移走。

 

*

click()方法中如果放了多个函数,如click(function1,function2,function3,function4),那么他会默认调用第二个函数。

 

*

当使用对象的函数(如click())时,系统会默认为bind()绑定时间。

bind()绑定时间只对一开始的数据有用,后来新增的数据没有效果。

live()对一开始的数据和后来新增的数据都有用。

 

*

html()获取的是在网页中的样子,

如;<div id="emailId">我            你</div>

那么这个的html()就是“我            你”,但是在网页中显示空格要用 ,这样用回车键打出的空格,不管有多长,都只算做1个空格。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-06-25 11:39  暹罗siam  阅读(161)  评论(0编辑  收藏  举报