博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DOM
阅读量:6280 次
发布时间:2019-06-22

本文共 6107 字,大约阅读时间需要 20 分钟。

Document Object Model,一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

查找元素

直接查找

document.getElementById             根据ID获取一个标签document.getElementsByName          根据name属性获取标签集合document.getElementsByClassName     根据class属性获取标签集合document.getElementsByTagName       根据标签名获取标签集合

从上面可以看出,除了根据ID获取标签是一个数量外,其他的都是一个集合或者数组,可以是1个也可以是多个.

间接查找

parentNode          // 父节点childNodes          // 所有子节点firstChild          // 第一个子节点lastChild           // 最后一个子节点nextSibling         // 下一个兄弟节点previousSibling     // 上一个兄弟节点 parentElement           // 父节点标签元素children                // 所有子标签firstElementChild       // 第一个子标签元素lastElementChild        // 最后一个子标签元素nextElementtSibling     // 下一个兄弟标签元素previousElementSibling  // 上一个兄弟标签元素

例子:输入框默认文字

    

操作

内容操作

innerText   文本outerTextinnerHTML   HTML内容innerHTML  value       值

属性操作

attributes                // 获取所有标签属性setAttribute(key,value)   // 设置标签属性getAttribute(key)         // 获取指定标签属性 /*var atr = document.createAttribute("class");atr.nodeValue="democlass";document.getElementById('n1').setAttributeNode(atr);*/
setAttributegetAttributeremoveAttribute===>    tabObj.checked = true===>jQuery: 操作数据,prop(checked,true)

例子:列表全选取消反选

注意全选反选时,尽量使用obj.checked=true ,false,否则如果文件里还有setAttribute的话,会出现错误.

    
111 222
111 222
111 222
111 222

class操作

className                // 获取所有类名classList.remove(cls)    // 删除指定类classList.add(cls)       // 添加类

例子:遮罩隐藏登录

    

标签操作

创建标签

创建标签有两种方式:

  • 对象方式
  • 字符串方式
  • 如果两种方式都出现的话,对象方式优先
// 方式一var tag = document.createElement('a')tag.innerText = "wupeiqi"tag.className = "c1"tag.href = "http://www.cnblogs.com/wupeiqi" // 方式二var tag = "wupeiqi"
//将标签添加到HTML中//字符串形式的标签:    p1.insertAdjacentHTML('beforeEnd',tag);//对象形式的标签:    p1.insertAdjacentElement('afterBegin',document.createElement('p'))    xxx.insertBefore(tag,xxx[1])
例子:点赞漂+1

其中用到了定时器:setInterval

    
例子:模拟邮件删除提示

其中用到了单词定时器:setTimeout

    

操作标签

// 方式一var obj = "";xxx.insertAdjacentHTML("beforeEnd",obj);xxx.insertAdjacentElement('afterBegin',document.createElement('p')) //注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd' // 方式二var tag = document.createElement('a')xxx.appendChild(tag)xxx.insertBefore(tag,xxx[1])

样式操作

var obj = document.getElementById('i1') obj.style.fontSize = "32px";obj.style.backgroundColor = "red";tag = .....tag.style.color = 'red';tag.style.fontSize = '40px';
例子:输入框关键字灰色
    

位置操作

总文档高度document.documentElement.offsetHeight  当前文档占屏幕高度document.documentElement.clientHeight  自身高度tag.offsetHeight  距离上级定位高度tag.offsetTop  父定位标签tag.offsetParent  滚动高度tag.scrollTop /*    clientHeight -> 可见区域:height + padding    clientTop    -> border高度    offsetHeight -> 可见区域:height + padding + border    offsetTop    -> 上级定位标签的高度    scrollHeight -> 全文高:height + padding    scrollTop    -> 滚动高度    特别的:        document.documentElement代指文档根节点*/

测试代码:

    

asdf

asdf

asdf

asdf

asdf

例子:滚动固定(这个比较屌)
    

第一章

第二章

第三章

例子:滚动高度
    

第一章

第二章

第三章

例子:返回顶层,并且最顶端不显示
    
返回顶部
返回顶部

提交表单

document.geElementById('form').submit()

其他操作

console.log                 输出框alert                       弹出框confirm                     确认框  // URL和刷新location.href               获取URLlocation.href = "url"       重定向location.reload()           重新加载  // 定时器setInterval                 多次定时器clearInterval               清除多次定时器setTimeout                  单次定时器clearTimeout                清除单次定时器

例子:确认

var ret = confirm('是否删除?');console.log(ret);

事件

event

事件重要补充:

  1. this,当前触发事件的标签
  2. 全局事件绑定 window.onKeyDown = function(){}
  3. event,包含事件相关内容
  4. 默认事件:自定义优先:a,form等;默认优先:checkbox

事件优先例子:

    
百度

输入框例子:

    
你可能感兴趣的文章
欧盟下周或有条件批准微软收购领英
查看>>
指纹识别不安全 美研究人员万能指纹解锁成功率达65%
查看>>
外媒:全球科技进入中美两强时代
查看>>
美国国家安全局在英国运营数据中心从事间谍活动
查看>>
【CVPR 2021主席出炉】谭铁牛、虞晶怡当选,未来4年6位华人主席
查看>>
CRM给企业带来的五大成效
查看>>
继 OpenAI 之后,DeepMind 开源深度学习训练平台 DeepMind Lab
查看>>
雅虎宣布成立研究院取代实验室 两高管离职
查看>>
大数据将如何改变农业
查看>>
《JavaScript和jQuery实战手册(原书第2版)》——第3章为程序添加逻辑和控制
查看>>
Google一年检测出超过76万个恶意网站
查看>>
遵义市 大数据产业汇聚八方人才
查看>>
教会委员会呼吁奥巴马宽恕斯诺登
查看>>
《Android的设计与实现:卷I》——第3章 3.6init循环监听处理事件
查看>>
联发科与高通平分秋色,消费者真不在乎处理器?
查看>>
台湾移动市场电信服务价格竞争预计将放缓
查看>>
《领域特定语言》一2.6 设计优良的DSL从何而来
查看>>
IDC圈探营:山西联通太原云数据中心
查看>>
呼叫中心还是客户中心?
查看>>
如何选择适当的低照度红外摄像机
查看>>