DOM是JS操作网页的接口,全称为**“文档对象模型”。其作用是将网页转为一个JS对象**,从而可以用脚本(JS)进行各种操作
浏览器会根据DOM模型,将结构化文档HTML解析成一系列节点,再把这些节点组成一个树状结构(DOM Tree)::所有的节点和树状结构都有规范的对外接口::
这个是浏览器解析网页形成节点和树,JS通过DOM这个接口来操作节点和树,DOM只是一个接口规范,可以用各种语言实现,不属于JS的语法,但是JS常常用到DOM操作。没有DOM,JS脚本语言就无法控制网页
++同理POM也属于接口++
class/id
一个文档的所有节点都是按照所在层级处理,可以抽象成一种树状结构,就是节点树
通过名字或者选择器返回特定的元素,名字和选择器都要用引号包裹
HTMLCollection(标签个数)
::如果没有元素匹配就返回空集document.getElementsByTagName()[0]
直接返回单个标签以上是HTML老版本,下面是新版本::通过选择器获得元素:::
document.querySelector('.myclass')
NodeList
对象innerHTML
document.getElemensByName
,也返回NodeList,但是它是动态集合通常,拥有一个保持不变的列表是一件好事。但有时您可能需要一个自动更新以反映当前 UI 的列表。++了解选择器方法是返回静态集合还是动态集合也有助于防止意外的副作用和错误++
div
#text
目前还不知道是啥d.cE().appendChild(d.cT())
appendChild:将内容或者子元素放到容器中,此时打印节点节点中就会有内容id=""
id="root"
标签节点.setAttributeNode(name)
var name = document.createAttribute("id");
name.value = “root”;text.setAttributeNode(name);
console.log(text);//详情见vsdocument.get...
找到
appendChild
后面添加目标标签,打印中的已被修改的
%% Element对象对应着网页的HTML元素,每一个HTML元素在DOM树上都会转化成一个Element节点对象/元素节点
name.classList.add("mybox")
;直接添加,不用写之前的classdocument.documentElement.clientHeight
视口(浏览器窗口)的高度document.body.clientHeight
网页可见区域的总高度(网页的实际高度)document.documentElement.scrollLeft/Top
%% 上面是JS操作HTML节点元素,同时我们也希望通过JS直接操作页面中CSS样式,让三者联动起来
setAttribute
方法直接设置网页元素的style属性div.setAttribute(
‘style’, 'background-color:"red";width:5px;height:5px;'
)%% 与HTML元素style相比,该方法能有效地避免错误
box.style.width = 200px;
box.style.backgroundColor = “red”;btn.onclick=function(){...}
btn.addEventListener("click",function(){..})
事件(函数)发生以后,默认会产生一个事件对象,作为(函数)参数传给监听函数,监听函数就是事件函数++为啥叫监听呢?是因为这个函数(事件)不是立即触发的,需要有条件才能触发,这个等待的过程被称为监听++
++我个人认为,Event事件对象作为函数的参数其中的属性、方法可以丰富JS对事件的操作++
注意注意,参数建议写成event,我怎么用e不行啊靠!
::鼠标事件就是与鼠标相关的事件,我们上文写到的onclick就用到了事件click(单击鼠标后触发)::
btn.ondblclick=function(){}
on
,也有不加的++类比于click,键盘事件名字前面也要加on++
注意,键盘事件的前提是要有输入框
keydown
事件,再触发keypress
事件event.keyCode===13
则提交数据?或者显示怎样的信息?%% 表单事件是表单元素以及输入框元素可以监听的事件
btn.oninput=func...
::btn是我们获取到的表单成员::event.target.value
搭配::这样我们在表单输入什么就实时显示什么::实时输入,实时获取reset()
myForm.reset();
::本质上仍然是事件,只不过该事件可以当方法使用::submit
:表单数据提交给服务器
onsubmit
onsubmit
,onsubmit会把表单里的数据提交给服务器!!username=zyt
这样的,就表明已经提交给服务器了,在HTML的中会有action
属性,内容就是与之连接的服务器地址%% 页面滚动时触发的事件,速度比较快
window.onscroll = func
监听滚动事件document.documentElement.scrollTop
获取滚动的距离,二者结合就可以实时获取滚动的高度%% 原理就是事件冒泡(事件会在冒泡阶段向上传播到父节点)。子元素数量很多时,明显一个一个设置事件不靠谱,我们就可以把子节点的监听函数定义在父节点上,通过父元素监听每一个子元素的事件
click
event.target.tagname
与大写的标签名作比较,::返回的是大写的元素标签名,如果想用小写,加上方法toLowerCase()::如果相等那就设置动作,动作常用event.target.innerHTML
返回的是标签中的内容。list.addEventListener("click",function(event){
if(event.target.tagname.toLowerCase===“li”) console.log(event.target.innerHTML);
})%% JS提供定时执行代码的功能,叫做定时器,主要由*setTimeout()和setInterval()*两个函数完成,这两个函数向任务队列添加定时任务
setTimeout(func|code,delay);
参1是函数或代码,参2是推迟执行的毫秒数var timer = setT...
然后clearTimeout(timer);
取消定时器注意:当函数当中有关于对象操作时,setTimeout()中的this指针不指向该对象,而是指向windows全局对象所以要注意对象成员名字起的不能与外界成员名一样。::或者在set函数之外对象函数之内var that=this;这时的this因为不在set函数中所以指向的仍然是该对象::++这声明变量也太简单了…++
clearInterval(timer);
%% 人数点击次数过多容易让浏览器卡死,防抖可以优化这种高频的反馈,以保证浏览器的性能
%% 和防抖比较像,应用背景也是一样的。防抖有一个不太完善的地方,就是我们滚动吧,如果我们是按着滚动条滚,那就不会返回高度
%% 常用的两种:CMD命令行工具和PowerShell命令行工具(更方便),ES6中使用只是比较基本,所以这两者没有太大的差异
C:
,再一回车dir
dir
+回车cls
+回车cd
+ 空格 + 文件名 + 回车::回车之后不写了,都要用::dir
查看内部文件cd 目录1\目录2\...
cd
+..
::加不加空格都行,后面也可以加个/::cd\
tab键
,会自动补全,相当于查找所引了tab键
内容会随之改变++一直按,直到找到精确的名字++mkdir
+空格+文件名exit
退出命令提示符窗口开始
,搜索PowerShell
打开shift+右键
打开++以上为ES5.1版本,接下来讲ES6版本!++