WEB前端--JavaScript
JavaScript
JavaScript基础
一、JavaScript简介
JavaScript是一种嵌入到HTML文件中的描述性语言,由浏览器的解释器将其动态地处理成可执行的代码,能独立地完成与客户端动态交互的网页设计语言。
JavaScript特点:
脚本语言,开发过程简单;
基于对象,能运用已经创建的对象;
简单,基于java基本语句和控制流,变量类型为弱类型;
动态,直接对用户的输入做出响应;
安全,不访问本地硬盘;
跨平台性,依赖于浏览器本身,与操作系统无关。
1 2 3 4 5 6 7 8 | <body>……<script type="text/javascript" src="j1.js" ></script><script type="text/javascript"> f1() alert("func");</script></body> |
位置:紧贴body底部,加载慢,不影响其他东西显示。
单行注释://
多行注释:/* …… */
二、JavaScript基本语法
1、常量和变量
常量的值不能改变,变量的值是可以改变的。
1.1、常量
整形常量(进制数)、实型常量(小数)、布尔值、空值(null)、特殊字符(/开头不可显示的特殊字符)。
1.2、变量
主要作为数据的存取容器
局部变量声明:var name='jack'
全局变量声明:name='jack'
一般不要写全局变量,都要var声明,否则会造成混乱,什么地方都能改,出错不好排查。
2、表达式和运算符
算术运算符:+、-、*、/、%、++、--
逻辑运算符:&&、||、!
比较运算符:<、>、<=、>=、=、!=
3、基本语句
3.1、if...else语句
1 2 3 4 5 | if(条件){执行语句1}else{执行语句2}//没有大括号也行,但这是一种习惯。 |
3.2、for语句
1 2 3 4 5 | for(初始化;条件;增量){语句集;……} |
3.3、switch语句
多分支选择语句,相当于shell的case语句。
1 2 3 4 5 6 7 8 9 10 | switch(){case 条件1:语句块1case 条件2:语句块2……default语句块N} |
3.4、while语句
1 2 3 4 | while(条件){语句集;……} |
break跳出所有循环;continue结束本次循环,跳到下次循环。
4、函数
4.1、普通函数
1 2 3 | function 函数名称(参数){函数执行部分} |
4.2、自执行函数
自己定义自己,并执行了自己这个函数。用处:jQuery本身功能满足不了需求,自己(用自执行函数)定义许多扩展功能,下面就能直接用了。
1 2 3 4 5 | <script type="text/javascript"> (function(arg){ alert(arg) })('参数');</script> |
5、字符串常用方法和属性
| obj.trim() | 去除字符串两边的空格 | a.trim() |
| obj.charAt(index) | 根据索引获取字符串里的字符 | a.charAt(0) |
| obj.substring(start,end) | 获取字符串的子序列(类似切片) | a.substring(0,2) |
| obj.indexOf(char) | 获取字符的索引值 | a.indexOf('a') |
| obj.length -->字符串属性(property,不带括号) | 计算字符串的长度 | a.length |
ps:可借用浏览器的console调试
6、数组
6.1、声明数组
1 2 3 | var a= [1,2,3]或var a=Array() |
6.2、添加
| obj.push(ele) | 追加元素 | a.push(5) |
| obj.unshift(ele) | 最前面插入元素 | a.unshift(0) |
| obj.splice(index,0,ele) | 指定索引处插入元素 | a.splice(2,0,'ele') |
6.3、移除
| obj.pop() | 尾部移除 | a.pop |
| obj.shift() | 头部移除 | a.shift |
| obj.splice(index,count) | 数组指定位置后count个字符 | a.splice(2,1) |
6.4、切片
| obj.slice(start,end) | 按索引切片 | a.slice(0,3) |
6.5、合并
| 新数组 = obj1.concat(obj2) | 把obj2合并到obj1里 | a.concat(b) |
6.6、翻转
| obj.reverse() | 元素都掉个顺序 | a.reverse() |
6.7、字符串化
| obj.join('连接符') | 合并成字符串,和python用法位置相反 | a.join('_') |
6.8、长度
| obj.length | 计算数组元素个数 | a.length |
7、字典
字典是数组的一种特殊形式,键值不必是字符串。可以通过键取值,也可循环。
1 2 3 4 5 6 7 | >> a={k1:123,k2:456}<< Object { k1: 123, k2: 456 }>> a['k1']<< 123>> for (var item in a){console.log(item);}<< k1 k2 |
8、异常处理
1 2 3 4 5 6 7 | try{ var m=n;}catch(e) { console.log(e);}finally{ console.log('finally');} |
三、JavaScript的事件
鼠标或键盘引发的一连串程序的动作,称为事件驱动。而对事件进行处理的程序或函数,则称为事件处理程序。
1、onClick事件(鼠标单击)
1 2 3 4 5 6 7 8 9 | <body><div align="center"> <img src="91@QLVP$85JJ5DD@T1V%7B%604K.png"></div><div align="center"> <input type="button" value="全屏" onclick="window.open(document.location,'big','fullscreen=yes')"> <input type="button" value="还原" onclick="window.close()"></div></body> |
2、onchange事件(表格变化)
在文本区域外部点击会弹出警告提示对话框
1 2 3 | <form><textarea cols='50' rows='5' onchange=alert("输入留言内容")></textarea></form> |
3、onSelect事件
文本框中的内容被选定所触发的事件
1 | <input name=stra id=stra tabIndex=1 value="选择输入的名称" size=16 onSelect=alert("选择输入的名称")> |
在文本框中选中文字后,会弹出选择文字的提示对话框。
4、onFocus事件
当单击表单对象时,即将光标放在文本框或选择框上时。
1 2 3 4 | <label><input type='radio' value='game' onfocus=alert('选择了游戏!')>游戏</label> |
5、onLoad事件(页面加载时)
加载网页文档时触发,作用是在首次载入一个页面文件时检测cookie值,并用一个变量为其赋值,使其可以被源代码使用。
1 2 3 4 5 6 | <script type="text/javascript">function mm(msg){ alert(msg);}</script><body onload="mm('欢迎光临')"></body> |
1 2 3 4 5 6 7 8 | //window方法<body> <script type="text/javascript"> window.onload=function(){ alert("欢迎光临"); } </script></body> |
上面是整个页面加载完成,一般情况都是当框架加载完成就触发:
1 2 3 4 5 6 7 | <body> <script type="text/javascript"> document.ready=function(){ alert("欢迎光临"); } </script></body> |
6、onUnload事件(退出网页时)
并可更新cookie的状态
1 2 3 4 5 6 | <script type="text/javascript">function mm(msg){ alert(msg);}</script><body onunload="mm('再见!')"></body> |
7、onBlur事件
与onFocus相对,文本框(text\textarea\select)不在拥有焦点,退到后台时触发。
8、onMuouseOver事件
当鼠标移动到某个对象上面时触发
9、onMouseOut事件
当鼠标离开某个对象时触发
10、onDblClick事件
鼠标双击时触发
1 | <body ondblclick="触发的一个函数"></body> |
11、其它事件
https://www.baidu.com/baidu?wd=js%CA%C2%BC%FE%C1%D0%B1%ED&tn=91529300_hao_pg
四、浏览器的内部对象
使用内部对象,可实现与HTML文档进行交互。这些内部对象提供了丰富的内部方法和属性,减轻了编程人员的工作,提高了变成效率。
1、navigator对象(浏览器对象)
提供有关浏览器的信息。
| appName | 浏览器的名称 |
| appVersion | 浏览器的版本 |
| appCodeName | 浏览器的代码名称 |
| browserLanguage | 浏览器使用的语言 |
| plugins | 可以使用的插件信息 |
| platform | 浏览器所使用的平台,如win32等 |
| cookieEnabled | 浏览器是否使用了cookie |
2、document对象(文档对象)
document对象包含了与文档元素一起工作的对象,它位于最底层,对实现页面信息交互起着关键作用,所以,在这些对象系统中,文档对象属性最重要。
最重要的三个对象:links、anchor和form。
document对象有以下方法:输出显示write()和writeln():该方法主要用来实现在web页面上显示输出信息。
3、window对象(窗口对象)
window对象处于对象层次的最顶端,提供了处理浏览器窗口的方法和属性。
4、location对象(位置对象)
位置对象时一个静态的对象,它描述的是某一个窗口对象所打开的地址。location对象常用的方法包括:
reload():相当于浏览器上的“刷新”功能。
replace():打开一个url后,单击浏览器的‘后退’,不能返回到之前的页面。
5、history对象
浏览器的浏览历史,常用方法:
back():后退
forward():前进
go():进入指定的页面
DOM编程
一、dom简介
文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。
二、基础知识
1、选择器:
document.getElementById('id')
document.getElementsByName('name')
document.getElementsByTagName('tagname')
举例:
1 2 3 4 5 6 7 8 9 | <body><div id="l1"> 123</div><script type="text/javascript"> var i= document.getElementById("l1"); //找 i.innerText="456"; //改</script></body> |
注:Firefox不太好使
2、获取或者修改样式 obj.className
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <style> .red{ background-color: red; } </style></head><body><div id="l1"> 123</div><input type="button" onclick="edit();" value="变红"><input type="button" onmousemove="rollback();" value="不变"><script type="text/javascript"> function edit(){ var i= document.getElementById("l1") i.className = "red" } function rollback(){ var i=document.getElementById("l1") i.className = "" }</script></body></html> |

3、获取或设置属性
setattribute(key,val) getattribute(key)
1 2 3 4 5 6 7 | <div name="myname" id="l1">123</div><script type="text/javascript"> var i= document.getElementById("l1"); var ret= i.getAttribute('name'); console.log(ret); //在控制台中打印找到的‘myname’ i.setAttribute('name','yourname');</script> |
4、改样式
obj.style.元素
1 2 3 4 5 | <div id='l1' style="font-size: 30px;background-color: green">123</div><script type="text/javascript"> var i= document.getElementById("l1"); i.style.backgroundColor="pink";</script> |
5、表单提交
document.getElementById(‘form’).submit()
1 2 3 4 5 6 7 8 9 | <input type="text" name="query" > <input type="button" onclick="submit_form();" value="提交"></form><script type="text/javascript"> function submit_form(){ document.getElementById('form1').submit() }</script> |
6、其它函数
console.log()
location.href = "url" 和 open('url') //类似于window.open('http://www.baidu.com')
alert()
confirm() //弹出框,true|false的选择
obj = setInterval("alert()",2000); clearInterval(obj); //让前面的alert每2秒钟执行一次,clearInterval是终止obj那个句柄
setTimeout(); clearTimeout(obj) //只执行一次,过几秒钟就没。
7、实例
跑马灯:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html><html> <head> <meta charset='utf-8' > <title>欢迎blue shit莅临指导 </title> <script type='text/javascript'> function Go(){ var content = document.title; var firstChar = content.charAt(0) var sub = content.substring(1,content.length) document.title = sub + firstChar; } setInterval('Go()',1000); </script> </head> <body> </body></html> |
搜索框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <!DOCTYPE html><html> <head> <meta charset='utf-8' /> <title></title> <style> .gray{ color:gray; } .black{ color:black; } </style> <script type="text/javascript"> function Enter(){ var id= document.getElementById("tip") id.className = 'black'; if(id.value=='请输入关键字'||id.value.trim()==''){ id.value = '' } } function Leave(){ var id= document.getElementById("tip") var val = id.value; if(val.length==0||id.value.trim()==''){ id.value = '请输入关键字' id.className = 'gray'; }else{ id.className = 'black'; } } </script> </head> <body> <input type='text' class='gray' id='tip' value='请输入关键字' onfocus='Enter();' onblur='Leave();'/> </body></html> |



浙公网安备 33010602011771号