Javascript高级技术(DOM操作详解)

Javascript高级技术

获取页面元素

API参数返回值方法解释
document.getElementById()IDElement对象通过ID获取页面的标签
document.getElementByTagName()TagNameElement对象的集合(伪数组通过标签名获取页面的元素集合
element.getElementByTagName()TagNameElement对象的集合(伪数组通过父元素使用子元素的标签名获取子元素集合
document.getElementByClassName()ClassNameElement对象的集合(伪数组)H5新方法通过类名获取页面的元素集合
document.querySelector()选择器(ID、TagName、ClassName)指定选择器的第一个元素对象<- 注意只能选择一个
document.querySelectorAll()选择器(ID、TagName、ClassName)指定选择器的全部元素对象<- 注意选择全部
docement.body-----获取body对象
docement.documentElement-----返回HTML元素对象

选择器选项需要加符号:#ID、TagName、.ClassName

documentElement、body没有参数

加粗的选项是H5新增的,对于老版本的浏览器有兼容性问题

  • typeof 检测元素类型
  • console.dir() 打印返回的元素对象,更好的查看
什么是伪数组
  1. 拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  2. 不具有数组所具有的方法

事件问题

事件的三要素:事件源、事件类型、事件处理程序

常用的鼠标事件类型
事件类型功能
onclick鼠标点击事件
onmouseover鼠标经过
onmouseout鼠标离开
onfocus获取焦点
onblur失去焦点
onmousemove鼠标移动
onmouseup鼠标弹起触发
onmousedown鼠标按下触发

案例:

<body>
    <div id="app">获取元素</div>
    <script type="text/javascript">
        const app = document.getElementById("app")
        app.onclick = function () {
            console.log("我怕被点击了")
        }
    </script>
</body>

案例结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VorPAgLO-1590218023815)(C:\Users\小胡同学\AppData\Roaming\Typora\typora-user-images\image-20200522114105187.png)]

DOM操作元素

改变元素内容方法区别
Element.innerText修改内容,不会转义HTML标签,去掉空格和换行
Element.innerHtml修改内容,同时转义HTML标签,保留空格和换行

以上两个方法可以获取内容 也可以通过赋值的方式修改其中的内容

<body>
    <div id="app">获取元素</div>
    <script type="text/javascript">
        const app = document.getElementById("app")
        app.onclick = function () {
            //获取元素的内容
            console.log(app.innerHTML)
            //修改元素的内容
            app.innerHTML = "<h1>你好啊</h1>"
        }
    </script>
</body>
修改元素的属性详情
element.src = value修改img对象的src属性
element.href= value修改元素对象的href属性
element.title= value修改元素对象的title属性
element.alt= value修改元素对象的alt属性
element.id= value修改元素对象的id属性
element.className = value修改元素对象的class属性
element.style.color = value – 其余的雷同修改元素对象的style属性
修改表单元素的属性详情
inputElement.value = value
inputElement.disabled = true | false
inputElement.type = type
inputElement.selected = true | false
inputElement.checked = true | false
获取元素的属性详情
element.getAttribute(‘属性’)获取元素的属性
获取属性和设置属性、移除属性
获取属性和设置属性方法区别
element.属性名一般是获取内置的属性
element.getAttribute(‘属性’)获取自定义的属性
element.属性名 = value设置内置属性的值
element.setAttribute(‘属性名’,‘属性值’)设置自定义属性的值
element.removeAttribute(“属性名”)取消元素的属性
注:element.属性名 (class应该是className) | setAttribute(‘属性名’,‘属性值’) (class不变)
H5自定义属性以及获取自定义属性的方法:有兼容性问题-IE11
  • 以**data-**开头的属性就是自定义的属性;

  • element.dataset.属性名 | element.dataset[“属性名”] 可以获取对应的元素

节点操作

节点元素必备:nodeType、nodeName、nodeValue

nodeType分类value
元素节点(主要操作)1
属性节点2
文本节点3
获取节点操作
操作详情
element.parentNode获取元素的父亲节点
element.childNodes获取元素的子节点的集合(元素节点、文本节点)
element.children获取元素的子节点的集合(元素节点)
element.firstChild获取第一个子节点(元素节点、文本节点)
element.lastChild获取最后一个子节点(元素节点、文本节点)
element.firstElementChild获取第一个子节点(元素节点) --兼容性问题IE9 可转化为【element.children[0]】
element.lastElementChild获取最后一个子节点(元素节点)–兼容性问题IE9可转化为【element.children[element.children.length-1]】
element.nextSibling获取下一个兄弟节点(元素节点、文本节点)
element.previousSibling获取上一个兄弟节点(元素节点、文本节点)
element.nextElementSibling获取下一个兄弟节点(元素节点)–兼容性问题IE9
element.previousElementSibling获取上一个兄弟节点(元素节点)–兼容性问题IE9
创建节点
操作详情
document.createElement(“tagName”)
通过**appendChild(创建的元素)**添加到页面上 - 在后边插入
创建元素并且添加到页面上
document.createElement(“tagName”)
通过insertBefore(创建的元素,指定的元素)**添加到页面上
在指定元素前添加元素
element.removeChild(element)删除孩子节点
element.cloneNode()克隆元素,返回一个node元素

element.cloneNode() 参数没有或者是false则为浅拷贝,只复制标签,如果是true则是深度拷贝,会复制里边的内容

三种动态创建元素的区别
操作优点缺点
document.write()直接将文本写入页面的内容流,会导致页面的重绘
innerHTML创建多个元素效率更高(你要采用字符串拼接的方式,需要采用数据的拼接形式)
createElement()创建多个元素效率稍微有一点低,但不会造成页面的重绘
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值