黑马程序员-JS基础-Web APIs与DOM事件

目录

API

DOM事件的执行步骤

1.获取元素

2.绑定事件

常见鼠标事件

禁止鼠标的默认事件

常用的键盘事件

3.添加事件处理程序

元素操作

节点操作

三种动态创建元素的区别

排他思想
​​​​​


API

API是封装好的函数接口,web API是浏览器提供的一套操作浏览器功能和页面元素的API(包括DOM和BOM)

DOM事件的执行步骤

1.获取元素

语法:var lis = document.getElementsByTagName('li')

获取方式语法备注
根据ID

document.getElementById('id')

根据标签名

document.getElementsByTagName('li')

返回的是对象的集合
HTML新增方法

getElementsByClassName('box')

返回的是对象的集合

document.querySelector('.box')

document.querySelector('#nav')

document.querySelector('li')

返回指定选择器的第一个元素对象

document.querySelectorAll('.box')

document.querySelectorAll('li')

所有元素对象集合

特殊元素

document.documentElement

html元素对象

document.body

body元素对象

2.绑定事件

  • 常见鼠标事件

鼠标事件触发事件
onclick点击鼠标左键触发
onmouseover鼠标经过触发
onmouseout鼠标离开触发
onfocus获得鼠标焦点触发
onblur失去鼠标焦点触发
onmousemove鼠标移动触发
onmouseup鼠标弹起触发
onmousedown鼠标按下触发
onmouseenter类似onmouseover,但不会冒泡
onmouseleave类似onmousemove,但不会冒泡
  • 禁止鼠标的默认事件

禁止鼠标右键菜单

document.addEventListener('contextmenu', function(e) {

                e.preventDefault();

            })

禁止鼠标选中

 document.addEventListener('selectstart', function(e) {

            e.preventDefault();

        })

  • 常用的键盘事件

onkeyup按键松开时触发
onkeydown按键被按下时触发
onkeypress按键被按下时触发(除了ctrl、shift等功能键)

键盘事件的执行顺序为keydown-keypress-keyup

3.添加事件处理程序

元素操作

  • 改变元素内容

div.innerText = ‘     ’

不识别html标签 非标准  去除空格和换行

div.innerHTML =‘     ’

识别html标签 W3C标准 保留空格和换行的

  • 常用属性操作:src、herf、id、alt、title等

        语法:element.id='   ';

  • 表单属性操作:type、value、checked、selected、disabled

 var btn = document.querySelector('button');

        var input = document.querySelector('input');

            btn.onclick = function() {

            input.value = '被点击了';

            this.disabled = true;

        }

  • 样式属性操作

element.style.width=70px;

对个别样式修改

element.className = ' change ';

element.className = ' first change ';

适合于样式较多或者功能复杂的情况

如果想要保留原先的类名,我们用多类名选择器

  • 自定义属性操作
自定义属性

div.getAttribute('index')

获得属性值

div.setAttribute('index', 2);

赋值或修改

div.removeAttribute('index')

删除属性值

H5中的自定义属性

(属性名前加‘data-’前缀)

div.getAttribute('data-index')

获取属性值

div.dataset

获取所有的自定义属性值

div.dataset.listName

获取指定的自定义属性值

div.dataset['listName']

div.getAttribute('data-index',‘2’)赋值或修改

节点操作

  • 节点的基本属性
节点类型

div.nodeType=1   元素节点

nodeType=2  属性节点

nodeType=3  文本节点

节点名称nodeName
节点值nodeValue
  • 节点层级
节点层级说明语法
父节点

node.parentNode
子节点返回所有节点类型

node.childNodes(返回一个集合)

node.firstChild

node.lastChild

只返回元素节点

node.Children

node.firstElementChild

node.lastElementChild

兄弟节点返回所有节点类型

node.nextSibling

node.previousSibling

只返回元素节点

node.nextElementSibling

node.previousElementSibling

  • 节点操作
节点操作语法说明
创建节点document.creatElement('tagname')
增加节点node.appendChild(child)
删除节点node.removeChild(child )
复制节点node.cloneNode( true/false)true为深拷贝,false为浅拷贝

三种动态创建元素的区别

document.write()将内容写入页面,文档执行完毕,页面会重绘
element.innerHTML创建多个元素效率更高(不要采用拼接字符串的形式,而是采用数组形式拼接)
document.creatElement()效率稍低,但结构清晰

排他思想

如果有一组元素,我们只想要某一个元素实现某种样式,需要用到排他思想

1.所有元素全部清楚样式

2.只给当前元素设置样式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值