1、查找HTML元素javascript
一般,经过 JavaScript,您须要操做 HTML 元素。html
一、经过 id 找到 HTML 元素前端
二、经过标签名找到 HTML 元素java
三、经过类名找到 HTML 元素node
提示:经过类名查找 HTML 元素在 IE 5,6,7,8 中无效。web
var x=document.getElementById("intro"); var y=document.getElementsByTagName("p");
①、改变 HTML 元素的内容 (innerHTML)ajax
document.getElementById(id).innerHTML=new HTML
②、改变 HTML 属性chrome
document.getElementById(id).attribute=new value document.getElementById("image").src="landscape.jpg";
③、改变 HTML 样式编程
document.getElementById(id).style.property=new style <script> document.getElementById("p2").style.color="blue"; </script>
④、添加或删除 HTML 元素json
2、DOM 事件
一、Js中的事件
行为,结构,样式分离的页面
通常事件 onclick 鼠标点击时触发此事件
ondblclick 鼠标双击时触发此事件
onmousedown 按下鼠标时触发此事件
onmouseup 鼠标按下后松开鼠标时触发此事件
onmouseover 当鼠标移动到某对象范围的上方时触发此事件
onmousemove 鼠标移动时触发此事件
onmouseout 当鼠标离开某对象范围时触发此事件
onkeypress 当键盘上的某个键被按下而且释放时触发此事件.
onkeydown 当键盘上某个按键被按下时触发此事件
onkeyup 当键盘上某个按键被按放开时触发此事件
①、绑定事件的3种方式
1: 直接写在html标签内声明
<div id="school" onclick="t();">
这种写法最古老,兼容性最强.属于DOM的lev0级的标准.这个效果,等同于在点击div的时候,执行"t();"这一语句,
在全局范围内执行,所以,t函数内部的this指代全局对象-->window 想操做被点击的DOM对象,用this就不行了.
第2种绑定方式:
DOM对象.onclick = function () {}
这种绑定是把一个DOM对象onclick属性赋值为一个函数,
所以,函数内部的this直接指向该DOM对象.
在这种绑定方式中,只能给一个事件,绑定一个处理函数
即 .onclick = fn1; .onclick = fn2;
最终的效果, 是.onclick = fn2;
若是用函数来调用其余函数的形式
例.onclick = function () {fn1(),fn2()}
那么此时, fn1,fn2中的this又指向window.
如何绑定多个函数, 并令this指向DOM对象
第三种绑定事件的方法:
DOM lev3的事件绑定标准
添加和去除监听事件.
addEventListener('事件',函数); // 第一个参数事件参数, 没有前缀"on", w3c的标准,IE不支持
注意点1: 若是添加了多个事件处理函数, 按"添加时的前后顺序来执行"
注意占2: 事件处理函数中的this 指代 DOM节点自身 (w3c标准)
注意点3: 第一个事件参数,一概把事件名称的'on'去掉 (w3c标准)
去除绑定
removeEventListener('事件',函数)
IE下绑定事件与解除事件的方法
attachEvent('事件',函数) // 注意: 事件 要加on
detachEvent('事件',函数) // 事件依然要加on
总结一下:
W3c addEventListener 与IE的attachEvent()的不一样
1: 函数名不一样
2: 事件名不一样, IE下要加on,w3c不加on
3: 加事件后的执行顺序不一样, w3c按绑定事件的顺序来执行, 而IE6,7,8,是后绑定的事件先发生.
4: this的指向, w3c中,绑定函数中的this指向 DOM对象, 而IE6,7,8中,指向window对象
3、事件的捕捉与冒泡模型
在w3c的模型中,
addEventListener 支持 第3个参数来声明事件的模型为冒泡仍是捕捉.
若是声明为 true,则为捕捉方式
若是声明为false, 或者不声明, 则为冒泡方式
注意: IE的attchEvent 没有第3个参数,不支持捕捉模型
事件对象的概念:
当事件对应的函数被触发时, 函数会接收到一个事件参数, // w3c标准
例 xx.onclick = function (ev) {alert(ev)}
点击后,ev 参数就表明单击那一瞬间的"各个参数",以一个对象的方式传过去.
对于IE, 当事件发生的瞬间,事件对象赋值给window.event属性
4、事件的中断
如何中断事件的传播???????
在w3c: 事件.stopPropagation();
在IE中, 事件对象.cancelBubble = true;
cancelBubble = true //IE取消冒泡
stopPropagation(); // w3c取消冒泡
returnValue = false; // IE取消事件效果
preventDefautl() ;// w3c取消事件效果
取消事件的默认效果
事件对象.preventDefault(); // 阻止事件的默认效果, w3c方法
事件对象.returnValue = false; // 设置returnValue 的属性值为false;
5、Js 做用域链(是指AO链)
1:参数
2:局部变量声明
3:函数声明
* 函数声明与函数表达式的区别
表达式必有返回值,把返回值(即匿名函数)赋给了一个变量.
此时 就是普通的赋值过程.
This, 与 arguments
当一个函数运行的时候,函数内部能引用的变量有这么几种
AO、arguments、this
对于 arguments和this, 每一个函数都有本身独有的arguments和this, 且不进行链式查找
arguments是什么?
答:1:arguments是收到的实参副本
2:收到实参收集起来,放到一个arguments对象里
在词法分析中, 首先按形参造成AO的属性,值为undefined
当实参传来时, 再修改AO的相应属性.
t(a,b,c){},
调用时: t(1,2,3,4,5) 个参数
此时 , AO属性只有a,bc,3个属性, arguments里有1,3,3,4,5, 全部的值
对于超出形参个数以外的实参, 能够经过arguments来得到
3:arguments 的索引 从 0, 1,2,....递增,与实参逐个对应
4:arguments.length 属性表明实参的个数
5:Arguments必定不是数组, 是长的比较像数组的一个对象,虽然也有length属性
6:Arguments每一个函数都会有,所以,arguemnts只会在内部找自身的arguments,
没法引用到外层的arguments
This是谁
This是指调用上下文
针对函数的应用场景来讨论
函数的4种调用方式
1:函数方式
直接调用函数名,或函数表达式的返回值,
This指代全局对象,window
2:属性方式(对象方法方式)
This指代该对象(方法的属主)
3:构造器方式
经过 new 函数 名() , 来建立对象
在js里, 构造函数与对象的关系比较松散,
对象就是"属性->值"的集合
构造器的做用,是制造一个对象,把this指向该对象,
4:call,apply方式
函数自己便是对象,对象就有方法
函数名.call(对象,参数1,参数2,参数3);
以fn.call(obj,'a','b');
实际效果至关于
1:fn内部的this指向了obj
2:fn('a','b');
Apply的效果与call同样, 只不过传参时,把全部参数包装在数组里,传过去.
例 fn.call(obj,'a',' b') ===> fn.apply(obj,['a','b']);
还有一种改变this的方法
With 语句
With(对象) {
语句1
语句2
.....
}
在with内部的语句,就把参数中的对象当成的上下文环境.
6、词法分析
6、Js面向对象
属性,方法-->对象
"类"能作到封装,继承,多态,
"类"的静态方法
1: js中的对象是什么?
答:js的对象就是键值对的无序集合
2:种建立对象的方法
①、经过字面量来建立对象
例:{age:22,hei:180}
{}->空对象,没有属性
②、经过 new Object([value]);
经过构造函数来建立对象(和第2种没区别,由于Object就是系统内建的构造函数)
7、Js面向对象中的封装
对象的属性外界是可读可写的, 如何来达到封装的目的?
答:经过闭包+局部变量来完成
在构造函数内部声明局部变量, 和普通方法,
由于做用域的关系,只有构造函数内的方法,才能访问到局部变量.
而方法对于外界是开放的,所以能够经过方法来访问局部变量.
事件触发总结:
一、onmousedown
定义:onmousedown事件会在鼠标按键被按下时发生
二、onmouseup
定义:onmouseup事件会在鼠标按键被松开时发生
三、onmousemove
定义:onmousemove事件会在鼠标指针移动时发生
支持该事件的js对象:document
可是onmousemove默认状况下没有任何对象的一个事件;
由于鼠标移动频繁发生。
四、onmouseover
定义:onmouseover事件会在鼠标指针移动到指定的对象上时发生
五、onmouseout
定义:onmouseout事件会在鼠标指针移出指定的对象时发生
六、onclick单击事件
定义:onclick事件和onmousedown不一样。单击事件是在同一元素上发生了
鼠标按下时间以后发生了鼠标放开时间是发生的。
理解:鼠标按下抬起之后事件才发生。
七、onfocus光标移入事件
定义:onfocus事件在对象得到焦点时发生
八、onblur光标移出事件
定义:onblur事件会在对象失去焦点时发生
九、oncontextmenu右键事件
鼠标按下右键的时候发生
十、onsubmit
onsubmit事件会在表单中的确认按钮(submit)被
点击是发生。
十一、onkeydown
onkeydown事件会在用户按下一个键盘按键时发生
十二、onkeyup
obkeyup事件会在键盘按键被松开时发生
1三、onload
onload事件会在页面或图像加载完成后当即发生
1四、onscroll
onscroll事件拖动滚动条时发生
1五、onresize
onresize事件会在窗口或框架被调整大小时发生
1六、onmousewheel
onmousewheel事件ie、chrome下鼠标滚轮滚动时发生
1七、DOMMouseScroll
DOMMouseScroll事件是标准下(ff)鼠标滚轮事件,
鼠标滚轮滚动时发生
1八、onreadystatechange
onreadystatechange事件:当请求被发送到服务器时;
咱们须要执行一些基于响应的任务。每当readyState
改变时,就会触发onreadystatechange事件。
readyState属性存有XMLHttpRequest的状态信息。
在onreadystatechange事件中,咱们规定当服务器响应
已作好被处理的准备时所执行的任务。
1九、attachEvent绑定事件
ie下的绑定事件,2个参数,第一个什么事件,第二个执
行函数(倒序执行)。注意this指向
如:obj。attachEvent(‘onclick’,aaa)
function aaa(){}
20、addEventListener绑定事件
标准下的绑定事件,3个参数。1什么事件(不加ON),
2执行函数 三、一个布尔值。true是捕获阶段,false是
冒泡阶段
2一、event对象指事件的状态
简单的:一个 存了 事件详细信息的东西
网上较专业的:Event对象表明事件的状态,好比事件在其中发生的元素
键盘按键的状态,鼠标的位置,鼠标按钮的状态,一般
与函数结合使用。
2二、clientX、clientY
在Event对象下获取鼠标位置
2三、cancelBubble =true
在Event对象下取消冒泡事件
2四、keyCode
在Event对象下获取用户按下键盘的哪一个按键
2五、preventDefault()
阻止默认默认事件的绑定写法
2六、return false
阻止默认时间的普通写法
2、DOM 27-46
2七、getElementById
经过id获取某一个元素
2八、getElementsByTagName
经过标签名获取一组元素的集合
2九、childNodes
获取子节点,可是标准下会获取空白节点
获取第一级子元素的节点
30、nodeType
节点类型
1)元素节点(标签)2)文本节点(空白节点)
3一、children
获取子节点,可是没有兼容性问题
获取第一级子元素的节点
3二、firstElementChild || firstChild
标准下:firstElementChild ie不支持
ie下是 firstChild
获取子元素里的第一个
3三、lastElementChild || lastChild
标准下:lastElementChild ie不支持
ie下是 lastChild
获取子元素里的最后一个
3四、nextElementSibling || nextSibling
标准下:nextElementSibling ie不支持
ie下 nextSibling
获取子指定元素的下一个兄弟节点
3五、previousElementSibling || previousSibling
标准下: previousElementSibling ie不支持
id:previousSibling
获取指定元素的上一个兄弟节点
3六、parentNode
获取父节点
3七、offsetParent
获取有定位的父节点,都没有定位的话父节点就是body
3八、offsetWidth-----有问题
获取元素的实际宽度(width+padding+border)
3九、offsetHeight
获取元素的高度(height+padding+border)
40、clientWidth
获取元素的内部宽度(width+padding)
4一、clientHeight
获取元素的内部高度(height+padding)
4二、createElement(标签名)
建立一个节点
4三、appendchild(节点)
追加一个节点
4四、insertBefore(节点,原有节点)
在已有的元素前面插入
4五、removeChild(节点)
删除一个节点
4六、replaceChild(节点,已有节点)
替换已有的节点
3、BOM操做: 47-53
4七、window。open()
打开窗口
4八、window。close()
关闭窗口,标准下不支持
4九、window。location
获取浏览器地址
50、window。location。href
获取总体的网址
5一、window。location。search
获取问号?后面的内容,包括问号
5二、window。location。hash
获取警号#后面的内容,包括警号
5三、window。location。reload()
自动刷新,定时器配合
5三、window。navigator。userAgent
获取浏览器信息
4、js基础: 54-126
5四、if else 若是。。。。不然。。。
5五、switch 若是
5六、?: 三木,就是若是。。。不然。。。
5七、for(){} for循环
5八、for in
5九、while=for
60、continue 终止本次循环
if(i=2)continue 跳过这个条件
6一、break 终止当前循环
if(i=3)break 结束本次
6二、undefined 未定义
6三、null=========?
6四、=== 只比较,不转换类型
6五、== 不只比较,并且还会将两个东西转换成相同的类型
6六、= 赋值
6七、! 就是 不 的意思
6八、setTimeout
设置定时器,2秒钟后,执行一次,而且只执行一次,---定时炸弹
6九、clearTimerout
清楚定时器,清理setTimerout
70、setInterval
设置定时器,每两秒执行一次
7一、clearInterval
清楚定时器,清理setInterval
7二、arguments
实参的元素集合
7三、call
改变this取向
fn名.call(this,‘black’)第一个参数是函数之行的环境,
从第二个参数开始,才是函数的真正参数
oDiv.onclick = function(){
toChange.call(this,'black');
};
function toChange(sColor){
this.style.background = sColor;
}
7四、apply
改变this取向,
function show(a, b)
{
alert('this是:'+this+'\na是:'+a+'\nb是:'+b);
}
show(12, 8);
show.apply(document, [12, 8]);
第二个参数是以数组形势存在的
7五、callee ===============?调用这个函数自身的
7六、var arr=【】; 声明一个数组
7七、var arr=new Array() 声明一个数组
7八、push
向数组的末尾添加一个或更多元素,并返回新的长度
7九、pop
删除数组最后一个元素,并返回这个元素
80、shift
删除数组第一个元素,并返回这个元素
8一、unshift
向数组的开头添加一个或多个元素,并返回新的长度
8二、splice
删除元素,并向数组添加新的元素
8三、join()
把数组的全部元素放入一个字符串。元素经过指定
的分隔符进行分隔
8四、sort()
对数组的元素进行排序
8五、concent----concat()?
链接两个数组或者多个数组,并返回结果
8六、split
分割字符串,得到数组
8七、substring
获取字符串
包括开始不包括结束
8八、indexOf
从前日后检索字符串
8九、charAt
获取某个字符
90、var re=//; 声明一个正则对象
9一、var re=new RegExp() 声明一个正则对象
9二、search 查找一个字符串,只找第一次出现的位置
9三、month ===============?
match-匹配符合正则的东西,挑东西返回数组
9四、test 用正则检验字符串是否符合它所规定的规则
9五、replace 替换,把符合规则的东西替换成字符串
9六、量词:{n,m}至少出现n次,最多出现m次
+许多
* {0,} 0到任意次
?零次或者一次{0,1}
{n,}最少n次,最多不限
{,m}最少不限最多m次
{n}正好n次
9七、字符类:
1[abc]2 1和2中间出现a或b或c
[^0-9]排除数字之外全部均可以
[a-z]全部的英文
[0-9]全部的数字
9八、标识: i 忽略大小写 g 全局匹配
9九、首尾: ^ $
100、转义:
\d 查找数字 [0-9]
\D 除了数字[^0-9]
\s 空白
\b 单词边界
\w 数字字母下划线--用户名
. 任意字符
\. 表明.自己
10一、var oDate= new Date() 获取当前时间
10二、getHours() 获取小时
10三、getMinutes() 获取分钟
10四、getSeconds() 获取秒
10五、getFullYear() 获取年
10六、getDay() 获取星期
10七、getDate() 获取当前的时间日期
10八、setDate() 设置一个月的某一天
10九、var oImg=new Image() 建立一个image对象
1十、什么叫ajax
经过XMLHttpRequest与服务器通讯,进行无刷新操做
ajax采用的是异步请求
1十一、同步与异步的区别
同步就是同一时间作一件事
异步就是同一时间作多件事
1十二、ajax的交互方式
1)发送数据并返回 ()(注册)
2)只发送不返回 ()========?例子
3)不发送只返回 (股票)
11三、post与get的区别
1)发送方式不同:get加载网址问好后面的
post把数据放在一个传输体中发送上去的
2)安全不同
post相对安全,get不安全
3)网址长度不同
ie下get网址超过2048字节将被截断
post没有上限
4)缓存问题
get能够缓存网址,post不会缓存网址
5)用途不同
get:查询数据,post修改数据
11四、发送数据是什么样的?
串联化数据:key1=value1&key2=value2
11五、返回数据是什么样的?
返回的是字符串
11六、跨域:jsonp?
(利用script标签跨域)
在头部建立个script标签,
改变script标签中src
11七、ajax的编写步骤?
1)建立ajax对象(要有手机)
2)连接服务器open(拨号)
3)监听数据返回onreadystatechange(听)
4)发送数据send(说)
5)close(忽略)(挂了)
11八、json怎么取?=========?
经过串联化数据
11九、什么是对象?
对象是一个总体,对外提供一些操做。||
黑盒子,看不到内部的样子,
能看到表面的按钮
120、什么是面向对象?
使用对象时,只关注对象提供的功能,
不关注其内部细节,好比jQuery ||
使用一个东西的时候,不去管内部是
怎么作的,只用好它的功能
下面是整理出来的一些函数,方便你们的学习和使用
下一步应该学习 HTML DOM 和 DHTML。
jQuery
jQuery 是一个 JavaScript 库。
jQuery 极大地简化了 JavaScript 编程。
jQuery 很容易学习。
jQuery Mobile 是一个为触控优化的框架,用于建立移动 web 应用程序。
jQuery 适用于全部流行的智能手机和平板电脑。
jQuery Mobile 构建于 jQuery 库之上,这使其更易学习,若是您通晓 jQuery 的话。
它使用 HTML五、CSS三、JavaScript 和 AJAX 经过尽量少的代码来完成对页面的布局。
HTML DOM 定义了访问和操做 HTML 文档的标准方法。
HTML DOM 独立于平台和语言,可被任何编程语言使用,好比 Java、JavaScript 和 VBscript。
AJAX = 异步 JavaScript 和 XML。
AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。
经过与服务器进行数据交换,AJAX 能够在不从新加载整个网页的状况下,对网页的某部分进行更新。
有不少使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。相似 XML。
JSON 比 XML 更小、更快,更易解析。