第九章 最后的补充

一、Jquery简单阐述

JQuery是一个JavaScript库,旨在减少和简化处理DOM和添加视觉效果的JavaScript代码;使用时必须得添加库路径;学习路径:http://jquery.com/

例1:

window.onload=function(){ alert("the page is loaded!"); }

Jqery:

 $(document).ready(function(){                //在网页加载完调用的函数

 alert("the page is loaded!");

 });

进一步简化:

 $(function(){

 alert("the page is loaded!");

 });

例2:id为buynow的元素添加单击事件

 $(function(){

 $("$buynow").click(function(){

 alert("I want to buy now!");

 });

 });

//要给网页所有a元素添加单击事件就将上述     buynow改成a  即可

二、补充的DOM获取元素的方法

document.getElementsByClassName      //返回一个NodeList其中包含所有class指定的元素

document.getElementsByName              //返回name特性的所有元素

document.querySelector                          //将一个选择器作为参数并返回匹配的第一个元素

document.querySelectorAll                      //选择器为参数,返回NodeList所有元素

如:var li=document.querySelector ("#playlist  .song");//先查id为playlist元素再查找第一个class特性为song的元素

三、补充对象window的属性方法

window.innerWidth //浏览器宽度  单位px

window.innerHeight //浏览器高度  单位px

window.close();      //关闭浏览器窗口

window.print();      //使用打印机打印网页

window.confirm();      //提供Okand Cancle

window.history;      //浏览器历史记录

window.location;      //当前网页的URl,可以设置加载新的网页

四、arguments

在每个函数中都有一个名为arguments的对象可供使用;以数组形式返回函数的所有参数

 <script>

 function printArgs(){

 for(var i=0;i<arguments.length;i++){

 console.log(arguments[i]);

 }

 }

 printArgs("one",1,1+5,"five");

 </script>

五、处理异常

网页控制器窗口可以报错,也可以使用try/catch

 <!doctype html>

 <html lang="en">

 <head>

 <meta charset="utf-8">

 <title>Show dogs</title>

 <script>

  window.onload=function(){

 try{

 var message=document.getElementById("messge");

 message.innerHTML="Here's the message!";

 }catch(error){

 console.log("Erroe! "+error.messsge);

 }

 };

 </script>

 </head>

 <body>

 <div id="message"></div>

 </body>

 </html>

六、addEventListener添加事件处理程序

给一个事件添加多个处理程序,使用方法addEventListener

例:

 <!doctype html>

 <html lang="en">

 <head>

 <meta charset="utf-8">

 <title>clickme</title>

 <script>

 window.onload=function(){

 var div=document.getElementById("clickme");

 if(div.addEventListener){//如果浏览器支持该方法

 div.addEventListener("click",handleClick,false);

 //参数:事件名称,程序名称,是否向上传递的标志

 }else if(div.attachEvent){//浏览器不支持addaddEventListener换方法

 div.attachEvent("onclick",hanleClick);//参数稍有不同且以onclick代click

 }

 };

 function handleClick(){

 var evt=window.event;//浏览器是否支持e

 var target;

 if(evt.target){//检查浏览器是否支持

 target=evt.target;

 }else{

 target=evt.srcElement;

 }

 alert("You Clicked on "+target.id);

 }

 </script>

 </head>

 <body>

 <div id="clickme">dianwo</div>

 </body>

 </html>

七、递归

 <script>

 function fibonacci(n){

 if(n==0||n==1){

 return 1;

 }else{

 return (fibonacci(n-1)+fibonacci(n-2));

 }

 }

 for(var i=0;i<10;i++){

 console.log("The fibonacci of "+i+" is "+fibonacci(i));

 }

 </script>

八、JSON

JavaScript不仅是一种Web编程语言,还正在逐渐成为一种常用的对象存储和传输格式,JSON是JavaScript Object Notation的缩写;

例1

 var fidoString='{"name":"Fido","breed":"Mixed","weight":38}';//单引号为JSON语句,即对象字符串

 var fido=JSON.parse(fidoString);//将字符串转换为对象

例2:

 var fido={

 name:Fido,

 breed:"Mixed",

 weight:38

 };

 var fidoString=JSON.stringify(fido);//将对象转换成字符串

九 、服务器端JavaScript

Node.js是当前流行的一种JavaScript服务器端技术,包含自己的运行环境和库。也是单线程;

学习路径:http://node.js.org/

十、正则表达式

“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。

“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。

“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

\s:用于匹配单个空格符,包括tab键和换行符;

\S:用于匹配除单个空格符之外的所有字符;

\d:用于匹配从0到9的数字;

\w:用于匹配字母,数字或下划线字符;

\W:用于匹配所有与\w不匹配的字符;

. :用于匹配除换行符之外的所有字符。

“^”定位符规定匹配模式必须出现在目标字符串的开头

“$”定位符规定匹配模式必须出现在目标对象的结尾

“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个

“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,

即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

/[A-Z]/上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。

/[a-z]/上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。

/[0-9]/ 上述正则表达式将会与从0到9范围内任何一个数字相匹配。

/([a-z][A-Z][0-9])+/上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。

{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,} n 是一个非负整数。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

优先级如下:

1. 1.\ 转义符

2. 2.(), (?, (?=), [] 圆括号和方括号

3. 3.*, +, ?, {n}, {n,}, {n,m} 限定符

4. 4.^, $, \anymetacharacter 位置和顺序

5. 5.|“或”操作

JavaScript 1.2中带有一个功能强大的RegExp()对象,可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式,并相应的返回true或false。

例:

 var email = obj.email.value;  

 var pattern =  

 /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;  

 flag = pattern.test(email);  

 if(flag)  

 {  

 alert(“Your email address is correct!”);  

 return true;  

 }  

例:

1 在字符串中执行查找

exec 方法:exec(String source)

例如:

 function isDigit(s){

 var reg = /^[0-9]{1,20}$/;

 var result = reg.exec(s);

 //如果格式正确,返回原字符串,否则返回null

 alert(result);

 }

2 在字符串中执行查找

match 方法:match(reg)

例如:

 function matchDemo(source){

 var reg = /^[a-z]/;

 var result = source.match(reg);

 alert(result);

 }

//注意与exec的区别

3 执行模式判定

test 方法:Boolean test(source)

例如:

 function isDigit(s){

 var reg = /^[0-9]{1,20}$/;

 var flag = reg.test(s);

 //如果格式正确,返回true,否则返回false

 if(flag){

 return true;

 }else{

 return false;

 }

 }

4 执行字符串位置查询

search 方法:int search(String reg)

例如:

 function seachString(){

 var r, re; // 声明变量

 var s = "The rain in Spain falls mainly in the plain.";

 re = /falls/; // 创建正则表达式模式

 r = s.search(re); // 查找字符串

 alert(r); // 返回 int 结果表示出现位置

 }

5 执行字符串分割

split 方法:String[ ] split(String reg)

例如:

 function splitString( ){

 var r, reg; // 声明变量

 reg = /abc/; // 创建正则表达式模式

 var s = “IcansaymyabcIcansaymyabcIcan…";

 r = s.split(reg); // 分割字符串

 for(var p in r){    // 返回 String 数组

 alert(r[p]);

 }

 }

JavaScript学习笔记(八)—— 补的更多相关文章

  1. JavaScript学习笔记八

    本文依据慕课网课程<JavaScript进阶>学习整理 第8章 浏览器对象 8-1 window对象   window对象是BOM的核心.window对象指当前的浏览器窗体.   wind ...

  2. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  3. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  4. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  6. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  8. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  9. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  10. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

随机推荐

  1. ssh无密码登陆远程机,pssh轻批量工具

    #B(client)--------A(g_server)#A:   ssh-keygen -t rsa (g_server)#B:    scp -P 58422 root@g_server_ip: ...

  2. 【洛谷】【二分答案+贪心】P1316 丢瓶盖

    [题目描述:] 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? [ ...

  3. kong安装

    1 哪些企业在用KONG: Mashapoe Marketplace Buzzlogix Gengo IBM Intel OpenDNS 饿了么 Kong可与两种不同的组件协同工作: Nginx:Ko ...

  4. php表单笔记

    PHP获取表单值: $_POST    //获取POST提交 $_GET      //  获取GET提交 <!DOCTYPE html> <html> <head> ...

  5. msf提权基础(一)

    令牌(token)相当于系统的临时密钥(账号及密码) 加载incognito模块 meterpreter> use incognito meterpreter > list_tokens ...

  6. Jenkins启动和停止服务

    1.怎么启动Jenkins? step1:进入到Jenkins的war包所在的目录. 如果是win7及以上版本,直接打开Jenkins的war包所在的目录,在地址栏敲cmd,回车. 上述结果和进入cm ...

  7. django admin自定义

    django admin自定义 class CustomerAdmin(admin.ModelAdmin): list_display = ('id','name','qq','consultant' ...

  8. 带着问题学习openstack

    1.为什么要引入nova conductor, nova conductor 为什么接管了nova api RPC调用nova scheduler 的任务? nova-conductor:与数据库交互 ...

  9. ASP.NET Core多语言 (转载)

    ASP.NET Core中提供了一些本地化服务和中间件,可将网站本地化为不同的语言文化.ASP.NET Core中我们可以使用Microsoft.AspNetCore.Localization库来实现 ...

  10. Oracle透明网关访问MySQL数据库

    针对oracle数据库不同实例之间的数据访问,我们可以直接通过dblink访问,如果oracle数据库想访问mysql/sqlserver等数据库的数据,我们可以通过配置oracle透明网关实现异构数 ...