JavaScript学习笔记(八)—— 补
第九章 最后的补充
一、jquery简单阐述
jquery是一个javascript库,旨在减少和简化处理dom和添加视觉效果的javascript代码;使用时必须得添加库路径;学习路径:http://jquery.com/
例1:
1 window.onload=function(){ 2 3 alert("the page is loaded!"); 4 5 }
jqery:
1 $(document).ready(function(){ //在网页加载完调用的函数 2 3 alert("the page is loaded!"); 4 5 });
进一步简化:
1 $(function(){ 2 3 alert("the page is loaded!"); 4 5 });
例2:id为buynow的元素添加单击事件
1 $(function(){ 2 3 $("$buynow").click(function(){ 4 5 alert("i want to buy now!"); 6 7 }); 8 9 });
//要给网页所有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的对象可供使用;以数组形式返回函数的所有参数
1 <script> 2 3 function printargs(){ 4 5 for(var i=0;i<arguments.length;i++){ 6 7 console.log(arguments[i]); 8 9 } 10 11 } 12 13 14 15 printargs("one",1,1+5,"five"); 16 17 </script>
五、处理异常
网页控制器窗口可以报错,也可以使用try/catch
1 <!doctype html> 2 3 <html lang="en"> 4 5 <head> 6 7 <meta charset="utf-8"> 8 9 <title>show dogs</title> 10 11 <script> 12 13 window.onload=function(){ 14 15 try{ 16 17 var message=document.getelementbyid("messge"); 18 19 message.innerhtml="here's the message!"; 20 21 }catch(error){ 22 23 console.log("erroe! "+error.messsge); 24 25 } 26 27 }; 28 29 </script> 30 31 </head> 32 33 <body> 34 35 <div id="message"></div> 36 37 </body> 38 39 </html>
六、addeventlistener添加事件处理程序
给一个事件添加多个处理程序,使用方法addeventlistener
例:
1 <!doctype html> 2 3 <html lang="en"> 4 5 <head> 6 7 <meta charset="utf-8"> 8 9 <title>clickme</title> 10 11 <script> 12 13 window.onload=function(){ 14 15 var div=document.getelementbyid("clickme"); 16 17 if(div.addeventlistener){//如果浏览器支持该方法 18 19 div.addeventlistener("click",handleclick,false); 20 21 //参数:事件名称,程序名称,是否向上传递的标志 22 23 }else if(div.attachevent){//浏览器不支持addaddeventlistener换方法 24 25 div.attachevent("onclick",hanleclick);//参数稍有不同且以onclick代click 26 27 } 28 29 }; 30 31 32 33 function handleclick(){ 34 35 var evt=window.event;//浏览器是否支持e 36 37 var target; 38 39 if(evt.target){//检查浏览器是否支持 40 41 target=evt.target; 42 43 }else{ 44 45 target=evt.srcelement; 46 47 } 48 49 alert("you clicked on "+target.id); 50 51 } 52 53 </script> 54 55 </head> 56 57 <body> 58 59 <div id="clickme">dianwo</div> 60 61 </body> 62 63 </html>
七、递归
1 <script> 2 3 function fibonacci(n){ 4 5 if(n==0||n==1){ 6 7 return 1; 8 9 }else{ 10 11 return (fibonacci(n-1)+fibonacci(n-2)); 12 13 } 14 15 } 16 17 for(var i=0;i<10;i++){ 18 19 console.log("the fibonacci of "+i+" is "+fibonacci(i)); 20 21 } 22 23 </script>
八、json
javascript不仅是一种web编程语言,还正在逐渐成为一种常用的对象存储和传输格式,json是javascript object notation的缩写;
例1
1 var fidostring='{"name":"fido","breed":"mixed","weight":38}';//单引号为json语句,即对象字符串 2 3 var fido=json.parse(fidostring);//将字符串转换为对象
例2:
1 var fido={ 2 3 name:fido, 4 5 breed:"mixed", 6 7 weight:38 8 9 }; 10 11 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。
例:
1 var email = obj.email.value; 2 3 var pattern = 4 5 /^([a-za-z0-9_-])+@([a-za-z0-9_-])+(\.[a-za-z0-9_-])+/; 6 7 flag = pattern.test(email); 8 9 if(flag) 10 11 { 12 13 alert(“your email address is correct!”); 14 15 return true; 16 17 }
例:
1 在字符串中执行查找
exec 方法:exec(string source)
例如:
1 function isdigit(s){ 2 3 var reg = /^[0-9]{1,20}$/; 4 5 var result = reg.exec(s); 6 7 //如果格式正确,返回原字符串,否则返回null 8 9 alert(result); 10 11 }
2 在字符串中执行查找
match 方法:match(reg)
例如:
1 function matchdemo(source){ 2 3 var reg = /^[a-z]/; 4 5 var result = source.match(reg); 6 7 alert(result); 8 9 }
//注意与exec的区别
3 执行模式判定
test 方法:boolean test(source)
例如:
1 function isdigit(s){ 2 3 var reg = /^[0-9]{1,20}$/; 4 5 var flag = reg.test(s); 6 7 //如果格式正确,返回true,否则返回false 8 9 if(flag){ 10 11 return true; 12 13 }else{ 14 15 return false; 16 17 } 18 19 }
4 执行字符串位置查询
search 方法:int search(string reg)
例如:
1 function seachstring(){ 2 3 var r, re; // 声明变量 4 5 var s = "the rain in spain falls mainly in the plain."; 6 7 re = /falls/; // 创建正则表达式模式 8 9 r = s.search(re); // 查找字符串 10 11 alert(r); // 返回 int 结果表示出现位置 12 13 }
5 执行字符串分割
split 方法:string[ ] split(string reg)
例如:
1 function splitstring( ){ 2 3 var r, reg; // 声明变量 4 5 reg = /abc/; // 创建正则表达式模式 6 7 var s = “icansaymyabcicansaymyabcican…"; 8 9 r = s.split(reg); // 分割字符串 10 11 for(var p in r){ // 返回 string 数组 12 13 alert(r[p]); 14 15 } 16 17 }