JavaScriptAPI

目录

一、DOM操作

        1.webAPI

        2.获取元素的方式

        3.事件

        4.对非表单元素的操作

        5.文本操作

二、属性操作与事件

        1.新事件

        2.监听事件

        3.事件对象

        4.阻止冒泡事件和默认事件

        5.属性操作

        6.设置元素样式的几种方法

三、DOM节点操作与BOM

        1.节点特征

        2.节点之间的关系

        3.创建元素的三种方式

        4.BOM

四、动画以及封装

        1.调试代码:

        2.封装思想:

        3.尺寸属性

        4.浏览器高度兼容性问题

        5.this的指向问题


一、DOM操作

        1.webAPI

                1.API:应用程序编程接口------预先定义好的函数

                2.webAPI:  

                        DOM中的API:write()

                        BOM中的API:alert()/log()/prompt()

                        数据中的API:substring()/reverse()/tofixed()

                3.DOM的顶级对象是document,BOM的顶级对象是window

                4.DOM中的概念:

                        文档:网页

                        元素:标签  div/p

                        属性:元素的属性 meta元素的charset/a元素的href

                        文本:标签之间的文字

                        节点:网页中所有的内容都是节点,包括元素节点、属性节点、文本节点、注释节点、document节点

                5.操作DOM:操作DOM中的节点

        2.获取元素的方式

                函数===方法,函数分为自定义函数和预定义函数(API)

                1、通过ID获取元素(getElementById('ID名'))                  单个元素

                2、通过类名获取元素(getElementsByClassName('类名'))                 多个元素

伪数组:有索引、length属性、还可以遍历,但是不是真正的数组,数组中专业的方法不能使用

                3、通过标签名获取元素(getElementsByTagName('标签名'))              多个元素

                4、通过name名获取元素(getElementsByName('name名'))              多个元素

                5、通过querySelector获取元素       获取指定选择器的第一个元素,参数是选择器     单个元素

                6、通过querySelectorAll获取元素    获取指定选择器的所有元素,参数是选择器       多个元素

        3.事件

                1.什么是事件:触发  --->  响应

                2.事件的三要素:

                        1.事件源:触发事件的元素

                        2.事件类型:鼠标触发的方式

                                鼠标事件、键盘事件、浏览器事件

                        3.事件的处理程序:事件触发后要执行的代码(以函数的形式返回)

                3.事件源.事件类型 = 事件的处理程序

                4.单击事件  onclick

                5.事件的写法

                        1、内部写法:

                        2、行内写法:将事件的类型当做元素的属性        (函数调用中this)

                        3、外部写法:注意外部js的顺序        window.onload = function () {}包起来

        4.对非表单元素的操作

                1.在js中操作元素的CSS属性,如果属性名有连接符-。需要将连接符去掉第二个单词首字母大写

                2.修改图片尺寸

                        1.imgObj.width = '1000'

                        2.imgObj.style.borderRadius = '50px'

                        3. imgObj.className = 'select'

                                className属性的弊端:会覆盖原先的类名属性值

        5.文本操作

                1.innerText/textContent:获取或者设置元素的文本内容

                2.innerHTML:获取或者设置元素的所有节点

二、属性操作与事件

        1.新事件

                1.鼠标事件:

                        单击事件:onclick

                        双击事件:ondblclick

                        鼠标移入事件:onmouseover

                        鼠标移出事件:onmouseout

                        鼠标进入事件:onmouseenter

                        鼠标离开事件:onmouseleave

                        鼠标按下事件:onmousedown

                        鼠标抬起事件:onmouseup

                        鼠标移动事件:onmousemove

                        鼠标获取焦点事件:onfocus

                        鼠标失去焦点事件:onblur

              2.键盘事件:

                        键盘按下:onkeydown  

                        键盘抬起:onkeyup

              3.浏览器事件:

                        加载完成事件:onload  

                        滚动事件:onscroll

        2.监听事件

                1、绑定事件:事件源.事件类型 = 事件的处理程序

                解绑事件: 事件源.事件类型 = null

                2、绑定监听事件:   事件源.addEventListener(事件类型(不用加on),事件的处理程序/事件处理程序的函数名)

                解绑监听事件:事件源.removeEventListener(事件类型,事件处理程序的函数名)

        3.事件对象

                1.事件对象的浏览器兼容性写法

                        var event = event || window.event

                2.事件类型

                        console.log(event.type)

                3.id

                        console.log(event.target.id)

                4.clientX、clientY与pageX、pageY的区别

                        clientX与pageX都是事件的触发点距离浏览器左侧的横坐标,pageX包含滚动条卷去的距离

                        clientY与pageY都是事件的触发点距离浏览器上侧的纵坐标,pageY包含滚动条卷去的距离

                5.key:键名

                        console.log(event.key)

                6.keyCode

                        console.log(event.keyCode)

        4.阻止冒泡事件和默认事件

                1.阻止事件冒泡

                        var event = event || window.event

                        event.stopPropagation()

                        }

                2.mouseenter(鼠标进入)不支持冒泡,而mouseover(鼠标移入)支持冒泡

                3.默认事件

                        1.a链接的跳转

                        2.表单的提交

                4.阻止默认事件

                        var event = event || window.event

                        event.preventDefault()

        5.属性操作

                1、getAttribute("属性名"):获取元素指定属性名的属性值(包括自定义和本身)

                2、setAttribute("属性名","属性值"):设置元素指定属性名的属性值(同上)

                3、removeAttribute("属性名"):移除元素的属性名

        6.设置元素样式的几种方法

                1、对象.style

                2、对象.className

                3、对象.setAtribute('style'," ")

                4、对象.setAtribute('class',' ')      

                5、对象.style.setProperty('css属性','css属性值')

                6、对象.style.cssText ="css样式"

三、DOM节点操作与BOM

        1.节点特征

                节点:标签节点、属性节点、文本节点、注释节点、document节点

                        1.document节点特征

                                节点类型nodeType:9

                                节点名称nodeName:#document

                                节点值nodeValue:null

                        2.标签节点特征:

                                节点类型nodeType:1

                                节点名称nodeName:大写的标签名

                                节点值nodeValue:null

                        3.属性节点特征:

                                节点类型nodeType:2

                                节点名称nodeName: 属性名

                                节点值nodeValue:属性值

                        4.文本节点特征    

                                节点类型nodeType:3

                                节点名称nodeName: #text

                                节点值nodeValue:文本内容

        2.节点之间的关系

                1、父节点        parentNode

                2、父元素节点        parentElement

                parentNode与parentElement的区别:

                        相同点:都能获取到父元素

                        不同点:html的有父节点是document,通过parentNode返回节点名称#document。

                  html没有父元素,通过parentElement返回空。

                3、子节点:文本节点、注释节点、标签节点        childNodes

                4、子元素节点:标签节点        children

                5、第一个子节点:文本节点   文本节点值or文本节点名称        firstChild

                6、第一个子元素节点:元素节点   第一个子元素        firstElementChild

                7、最后一个子节点  文本节点   文本节点值or文本节点名称        lastChild

                8、最后一个子元素节点  元素节点   最后一个子元素        lastElementChild

                9、上一个节点:   文本节点   文本节点值or文本节点名称        previousSibling        

                10、上一个元素节点  元素节点   上一个元素        previousElementSibling

                11、下一个节点  文本节点   文本节点值or文本节点名称        nextSibling        

                12、下一个元素节点  元素节点   下一个元素        nextElementSibling

                总结:

           firstChild、lastChild、previousSibling、nextSibling返回的都是文本节点,有就返回文本的节点值,没有就返回文本的节点名称

           firstElementChild、lastElementChild、previousElementSibling、nextElementSibling 返回都是元素节点 

        3.创建元素的三种方式

                1、document.write()        弊端:只能往body中添加元素

                2、innerHTML        弊端:会覆盖之前的元素

                3、document.createElement()

                        父元素.appendChild():  添加子元素

                        父元素.removeChilid():删除子元素

        4.BOM

                window

                        属性:console/所有的全局变量

                        方法:alert()/prompt()

                        事件:onload()/onscroll()

                1、location

                        a、hash:  地址栏上#及后面的内容        eg:window.location.hash

                        b、host:  主机名及端口号

                        c、hostname:  主机名

                        d、part:  端口号

                        e、href:当前地址

                        f、reload:  重新加载  

                2、history

                        a、前进  forward()

                        b、后退  back()

四、动画以及封装

        1.调试代码:

                如果发现事件操作后没有任何响应

                        1、先测试事件有没有执行,打印console.log(1)

                        2、如果没有任何的打印结果,再去测试事件源是否获取到 console.log(事件源)

        2.封装思想:

                1、把功能相同代码封装在一个函数中

                2、把可变化的量当做参数

        3.尺寸属性

                1.offset系列

                        1、offsetWidth = width+左右的padding+左右的border

                        2、offsetHeight = height+上下的padding+上下border

                        如果父元素没有定位

                        3、offsetLeft = 距离左侧浏览器的距离

                        4、offsetTop = 距离上侧浏览器的距离

                        如果父元素有定位

                        5、offsetLeft = 距离左侧父元素的距离

                        6、offsetTop = 距离上侧父元素的距离

                2.client系列

                        1、clientWidth = width + 左右padding

                        2、clientHeight = height + 上下padding

                        3、clientLeft = border-left

                        4、clientTop = border-top

                3.scroll系列

                        1、scrollWidth = width  + 滚动条卷去的宽度

                        2、scrollHeight = height + 滚动条卷去的高度

                        3、scrollLeft = 滚动条卷去的宽度   (只能在滚动事件下获取,但是可以在任何情况下设置)

                        4、scollTop = 滚动条卷去的高度

        4.浏览器高度兼容性问题

                 1.浏览器卷去的高度

                        标准模式: document.docmentElement.scrollTop

                        非标准模式:document.body.scrollTop

                2、浏览器的高度

                        标准模式:

                          document.body.clientHeight    浏览器的实际高度

                          document.documentElement.clientHeight   浏览器的可视高度

                        非标准模式:

                         document.body.clientHeight    浏览器的可视高度

                         document.documentElement.clientHeight   浏览器的实际高度

        5.this的指向问题

                        1、在构造函数中this指向实例化对象

                        2、在对象的函数中(方法中)this指向当前的对象

                        3、在普通函数中this指向window

                        4、在事件函数中,this指向事件源

                        5、在定时器函数中this指向window

                        6、原型对象的函数中this指向:
                              
  1、如果实例化对象调用,this指向实例化

                                2、如果原型调用,this指向原型对象

                        7、在数组的函数中,this指向当前数组

                                

     

                

             

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值