1.Dom:
一个网页就是一个文档对象;网页上所有的内容都是节点。
2.获取元素对象
在js脚本中才有属性innerHTML,不是标签属性,获取元素内容。
innerText:只能写静态文本,比如innerText="<p>hhh</p>"
会显示出来<p>hhh</p>
。
3.可以修改属性值,如改class、title等等属性值。
应用:可以通过修改class值修改属性值,使样式修改,
两者获取时:从函数的名字可以知道,通过getElementsByClassName获取到的是一个数组,
**(除id,和querySelected()这两个返回一个元素其他的也是这样子,返回一个伪数组)**包括多个DOM元素,所以要执行DOM元素的方法,必须加一个索引,比如document.getElementsByClassName(“class名”)[0]。
而由于id是唯一的,所以通过getElementById只有一个DOM元素,可以直接调用DOM方法。
使用foreach没有不能写break,没有办法中止或者跳出 forEach() 循环,除了抛出一个异常。
由于nodelist()(classname可以使用)和htmlcollection()–(tag不可以使用)两种类型使用提供的方法不同。(console.dir()可以查看)
4.单选框和多选框的值获取
(selected=true选中)
5.默认点击事件的去除
<a href="JavaScript:void(0)"></a>
<a href="JavaScript:selectAll()"></a>
<a>标签中照常写地址,可以在初始化里面注册点击事件,最后写return false;会不进行跳转。
6.表单元素属性
value可以获取绝大多数的表单属性(option除外);
multiple表示下拉菜单可以多选;
分清楚已有属性(查工具书)
- 自定义属性操作:既可以取得已有属性也可以取得自定义属性。
getAttribute()、removeAttribute()、setAttribute(),之间写属性和修改的属性值
7.排他性:
先清楚所有的元素一些属性,再重新赋属性和属性值。
应用:可以用于一些点击效果,每次只有这一次点击得到元素产生反应,其他会保持原来的属性,换一个点击也是如此。
8.事件
常用的点击事件:
onchange()->常用于文本框;
onblur()->元素失去焦点
等等,去工具书看。
都可以为元素绑定事件 addEventListener和attachEvent
不同点:
- 1.方法名不一样
- 2.参数个数不一样addEventListener三个参数,attachEvent两个参数
- 3.addEventListener 谷歌,火狐,IE11支持,IE8不支持
- attachEvent 谷歌火狐不支持,IE11不支持,IE8支持
- 4.this不同,addEventListener 中的this是当前绑定事件的对象
- attachEvent中的this是window。(IE8中其实通过apply、call改变了this的指向)
- 5.addEventListener中事件的类型(事件的名字)没有on
- attachEvent中的事件的类型(事件的名字)有on
9.特效属性
偏移量:
offsetParent 离当前元素最近的一个有定位属性的父节点的距离 。如果父亲都没有定位,返回body
10. BOM
定时器: js是单线程的
单线程意味着下一段代码必须在当前代码执行完了才能执行。
单线程即任务是串行的,后一个任务需要等待前一个任务的执行,这就可能出现长时间的等待。所以如果setInterval内执行的计算过于耗时,或者有其他耗时任务在行,setInterval的计时会越来越不准,延迟很厉害。