JavaScript笔记
js简介
JavaScript是什么
JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言(脚本就是一段程序用来完成某项特殊功能)
js的特点
向HTML页面中添加交互行为
脚本语言、语法和java类似
解释性语言边解释边执行
一般用来编写客户端脚本
独立于平台
为什么要学习js
美化网页
缓解服务器端压力
基本结构
1 | <script type="text/javascript"> |
引入js的方法
使用<script>标签(可以加在HTML文件的任意地方)
外部js文件
1
<script src="index.js"></script>
直接在HTML标签中
1
<span onclick="javascript:alert('Hello world')"></span>
核心语法
变量
- 先声明变量再赋值
例如:var width;
var用于声明变量的关键字
width=5;
width是变量名
- 同时声明和赋值变量
var catname-“ ”;
var x,y,z=10;
- 不声明直接赋值(不推荐)
width=5;
命名规则
有数字字母下划线和$组成,不能有空格
首字母不能是数字
不能用js关键字与保留字
区分大小写
最大长度为255
数据类型
typeof():用于检测变量的返回值(特殊的运算符)
注:undefined和null和NaN的区别:尽管两个值相等但它们的含义不同,undefined未对该变量赋值 null表示赋了一个空值 NaN是一种number数据类型
String对象
字符串对象.length 返回字符串的长度
.CharAt(2) 返回字符串指定位置的字符
.substring(3,5) 返回截取的字符串
.slice(3,5) 返回截取的字符串
(第一位指从哪开始截取,第二位指截到哪一位)
.substr(2,3) 返回截取的字符串
(第一位指从第几位开始截取,第二位指从那一位基础上向后截取几个字符)
.indexof(str,3) 查找某个字符在字符串中首次出现的位置
.split(“ “) 将字符串分割成为数组,将空格作为分隔符
数组
数组:存储一组数据的基可以是任意数据类型
创建的三种方式
//定义并赋值
var 数组名=new Array(“1”,”2”,”3”);
//先定义后赋值,长度由最大的决定
var 数组名=new Array(2);
a[0]=”1”;
a[1]=”2”;
//不定义直接赋值
var 数组名=[“1”,”2”,”3”];
数组的方法:
push属性:向数组末尾添加元素并且返回新的数组长度
join() 使数组元素以()里的符号进行连接
sort 对数组排序
function paixv(a,b){
return a-b;
}
document.write(attr.sort(paixv))
pop() 删除数组末尾的元素(返回的是删除的元素)
unshift() 在数组前面添加元素(返回的是数组元素总数)
shift() 在数组前面删除元素(返回被删除的元素)
splice(2,2)从数组指定位置向后删除元素
splice有三个参数:第一个参数是删除的起始位置
第二个参数是删除的数量
第三个参数是在原位置添加的元素(可以是多个用逗号隔开)
运算符
| 类型 | 运算符 |
|---|---|
| 算术运算符 | +、-、*、/、%、++、– |
| 赋值运算符 | =,+=,-=,*=,/=,%= |
| 比较运算符 | >、<、>=、<=、==、=、!=、!== |
| 逻辑运算符 | &&,||,! |
优先级:!>算术运算符>比较运算符>赋值运算符>&&>||
选择结构
if判断语句
var i=0;
if(i<=10){
true返回值
}else{
false返回值
}
三元运算符:2+3 ? true:false;
switch判断
1 | switch(i=1){ |
循环结构
for循环
1 | var i=0; |
while循环
1 | var i=0; |
do while循环
1 | var i=0; |
函数
系统函数
1 | parseInt(“字符串”) 将字符串转换为整形数字,只取整数值 |
自定义函数
1 | function 函数名(参数1,参数2,…){ |
内置对象
Date对象
1 | var date=new Date() //创建日期对象 |
Math对象
1 | Math.PI //获取圆周率 |
String对象
1 | var str="asdfghjkl"; |
Array对象
var arr=new Array()
arr.push //向数组末尾添加元素并且返回新的数组长度
arr.join() //使数组元素以()里的符号进行连接
// sort 对数组排序
// function paixv(a,b){
// return a-b;
// }
// document.write(attr.sort(paixv))
arr.pop() //删除数组末尾的元素(返回的是删除的元素)
arr.unshift() //在数组前面添加元素(返回的是数组元素总数)
arr.shift() //在数组前面删除元素(返回被删除的元素)
arr.splice(2,2) //从数组指定位置向后删除元素
// splice有三个参数:第一个参数是删除的起始位置
// 第二个参数是删除的数量
// 第三个参数是在原位置添加的元素(可以是多个用逗号隔开)
Global对象
1 | var str="adsfghj" |
BOM
事件
onload 一个页面或一幅图像加载完成
onclick 鼠标点击某个对象
onmouseover 鼠标移到某个元素上
onmouseout 鼠标下移
onkeydown 键盘按键按下
onchange 域的内容被改变
window对象
setInterval(“函数名”,1000) 节拍器
setTimeout(“函数名”,1000) 定时器
open(“弹出窗口的URL”,”窗口名称”,”窗口特性”)
width,height 窗口文档显示区的高度和宽度
left,top 窗口的x,y轴
toolbar=yes/no 是否显示浏览器的工具栏默认为yes
scrollbars=res/no 是否显示滚动条
close()
history对象
.length 返回历史列表中的网址数
.go(-1) 加载某个指定的页面
.back() 返回上一个页面的URL
.forword() 返回下一个页面的URL
location对象
host 设置货返回主机名和当前URL的端口号
hostname 设置或返回当前URL的主机名
href =url(‘ ’) 设置或返回当前完整的URL
.reload() 重新加载当前文档
.replace() 用心的文档替换当前文档
Navigator对象
appCodeName 返回浏览器的代码名
appName 返回浏览器的名称
appVersion 返回浏览器的平台和版本信息
platform 返回运行浏览器的操作系统平台
DOM
什么是DOM
操作HTMl文档提供的属性和方法
节点(Node)
HTML中每个标签或元素都是一个节点
整个文档是一个文档节点
每个HTML标签是一个元素节点
包含在HTML元素中的文本是文本节点
每个HTML属性是一个属性节点
注释属于注释节点
因此一个HTML文件可以看作是所有元素组成的一个节点树,各元素之间有级别的划分
document
document是window对象的子对象,通过使用document对象可以对文档中的对象内容等进行访问
document常用属性:
referrer返回载入文档的URL
URL返回当前文档的URL
//获取class名为aaa的元素
document.getElementById(“#aaa”)
// 获取name标签为ming的元素
document.getElementsByName(“ming”)
// 获取标签为p的所有元素
document.getElementsByTagName(“p”)[0]
// 获取class名为aaa的所有元素
document.getElementsByClassName(“.aaa”)[0]
innerHTML 获取设置标签及内容
innerText 获取设置内容
节点获取
var sp=document.getElementById(“mylist”)
var p=document.getElementById(“demo”)
sp.parentNode //返回节点的父节点
sp.childNodes[0] //返回子节点的集合
sp.firstChild //返回节点的第一个子节点
sp.lastChild //返回节点的最后一个子节点
sp.nextSibling //返回下一个节点
sp.previousSibling //返回上一个节点
以上方法每个标签秋垵后都会有一个text空格的标签原因是html的缩进
sp. children //获取所有的子元素
sp.firstElementChild //返回节点的第一个元素子节点(包含内容)
sp.lastElementChild //返回节点的最后一个元素子节点
sp.nextElementSibling //返回下一个元素节点
sp.previousElementSibling //返回上一个元素节点
节点信息
nodeName:节点名称(文本nodeName名永远是#text,文档名永远是#document)
nodeValue:节点值(不适用于文档节点和元素节点)
nodeType:节点类型
| 节点类型 | nodeType值 |
|---|---|
| 元素element | 1 |
| 属性attr | 2 |
| 文本text | 3 |
| 注释comments | 8 |
| 文档document | 9 |
设置获取属性
getAttribute(“属性名”) 用来获取属性的值
setAttribute(“属性名”,“属性值”)用来设置属性的值
节点操作
创建节点
document.createElement(“a”);
插入节点
A.appendChild(B) //把B节点追加至A节点末尾
A.insertBefore(B,C) //把B节点插入到C节点之前
A.cloneNode(boolean) //复制某个指定的节点元素
true:复制该节点以及内部所有节点 false:只复制该节点及其属性
删除和替换节点
ul.removeChild() 删除节点
ul.replaceChild(new node,old node) 替换节点
获取元素样式
style属性,只能获得内联样式表中css样式
l2.style.backgroundColor
document.defaultview.getComputedstyle(节点,null)
document.defaultView.getComputedStyle(l2,null).backgroundColor
获取定位的元素
offsetParent返回一个指向最近,包含该元素的父定位元素
offsetTop div元素上方偏移量
offsetLeft div元素左侧偏移量
clientwidth是一个只读属性返回元素的内部宽度以像素为单位,包括内边界但不包括垂直滚动条、边框和外边距
offentwidth和offentHeight=边框+padding+滚动条+内容
clientwidth和clientHeight=padding+内容
获取滚动条数据
滑动滚动条,获取元素滚动条到元素左边或顶部的距离
var div=document.getElementsByTagName(“div”)[0]
div.onscroll=function(){
p.innerText=div.scrollTop.toFixed()
p.innerText=div.scrollLeft.toFixed
}
RegExp对象(正则表达式)
var reg=new RegExp()或 var reg=/^…$/
1.[]:表示一个字符,该字符可以是[]中指定的内容
[abc]:这个字符可以是a或b或c
[a-z] :表示任意一个小写字母
[a-zA-Z] :表示任意一个字母
[a-zA-Z0-9_] :表示任意一个数字字母下划线
[^abc] :该字符只要不是a或b或c
2.预定义字符:
. :表示任意一个字符,没有范围限制
\d :表示任意一个数字,等同于[0-9]
\D :表示不是数字
\w :表示任意一个单词字符,等同于[a-zA-Z0-9_]–单词指字母/数字/_
\W :不是单词字符
\s :表示任意一个空白字符
\S :不是空白字符
3.量词:
?:表示前面的内容出现0-1次
+:表示前面的内容最少出现1次
*:表示前面的内容出现任意次(0-多次)—匹配内容与+一致,只是可以一次都不写
{n}:表示前面的内容出现n次
{n,m}:表示前面的内容出现最少n次最多m次
{n,}:表示前面的内容出现n次以上(含n次)
4.()用于分组,是将括号内的内容看做是一个整体
(abc){3} 表示abc整体出现3次.
(abc|def){3} 表示abc或def整体出现3次.
RegExp方法
exec() 检索字符串中指定的值。返回找到的值,并确定其位置。
test () 检索字符串中指定的值。返回 true 或 false。
支持正则表达式的String对象方法
search 检索与正则表达式相匹配的值。
match 找到一个或多个正则表达式的匹配。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。