1 什么是DOM

全称 Document Object Model 文档对象模型。

一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象。可以通过dom对象中js提供的方法,找到html的各个标签。通过找到标签就可以操作标签使页面动起来,让页面动起来。

2 获取标签

 // 直接获取标签

 document.getElementById('i1'); //获取id为i1的标签

 document.getElementsByTagName('div'); //根据标签名称获得标签数组

 document.getElementsByClassName('c1'); //根据class属性获取标签的数组

 document.getElementsByName('dsx'); //根据name属性获取标签数组

 // 间接获取标签

 var tmp=document.getElementById('h-test');

 tmp.parentElement; // 父节点标签元素

 tmp.children; //所有子标签

 tmp.firstElementChild; //第一个子标签元素

 tmp.lastElementChild; // 最后一个子标签元素

 tmp.nextElementSibling; //下一个兄弟标签元素

 tmp.previousElementSibling; //上一个兄弟标签元素

3 操作标签

3.1 文本内容操作

 //innerHTML与innerText

 tmp.innerText; // 获取标签中的文本内容

 tmp.innerText='老铁双击666'; //更改标签内文本内容

 tmp.innerHTML; // 获取标签中的所有内容,包含html代码

 tmp.innerHTML = '<a href="http://www.imdsx.cn">大师兄</a>' // innerHTML 可以将含有HTML代码的字符串变为标签

 //input、textarea标签

 tmp.value; //获取input、textarea参数

 tmp.value = '内容' // 对input、textarea的内容进行赋值

 //select标签

 tmp.value; //获取select标签的value参数

 tmp.value = '选项' // 修改select选项

 tmp.selectedIndex; // 获取select标签的选项下标

 tmp.selectedIndex = 1 // 通过下标更改select的选项

3.2 事件

  • 直接绑定

直接在标签中绑定事件

 <input type="button" value="提交" style="float:left;margin-top: 16px" ondblclick="showValueD();">

 //this代指当前这个操作的标签
<input type="button" value="提交" style="float:left;margin-top: 16px" ondblclick="showValueD(this);"> // function接收this,通过查找父级,兄弟,子级来定位操作的元素
function showValueD(ths) { alert(ths.previousElementSibling.value); }
  • 间接绑定

通过JavaScript获取到需要绑定事件的标签,obj.onclick=function(){} 绑定事件

var obj = document.getElementById('onmouse');
obj.onmouseover = function () { obj.style.background = 'red'; }; // 间接绑定的this代指,getElementById找到的这个标签
var obj = document.getElementById('onmouse');
obj.onmouseout = function () { this.style.background = ''; } //装逼绑定 支持同一个操作执行不同的两段代码
var obj = document.getElementById('onmouse');
obj.addEventListener('click', function () { console.log(111) }, false) onfocus() //获取光标时做操作
onblur() //失去焦点做操作
onclick() //单击时做操作
ondblclick() //双击时操作
onmouseover() //鼠标悬浮触发操作
onmouseout() //鼠标离开悬浮时触发操作

3.3 操作样式

 tmp.className = 'c1'; // 更改标签class属性 只能有一个class属性

 tmp.classList;// 获取样式数组

 tmp.classList.add('aaa'); //添加样式 数组

 tmp.classList.remove('aaa'); //删除样式

 tmp.checked; //获取checkbox的状态 true为勾选

 操作单独样式

 style.xxx //操作样式的粒度更加细化,操作单个样式属性,相当于在标签中增加一个style属性

 style.backgroundColor // 例:在css中样式可以通过【-】进行连接,在JavaScript中,所有的【-】都被去掉,【-】后面的第一个字符大写
className: 字符串形式的class名
classList: 列表形式的class名
add(): 对列表的样式进行增加
remove(): 对列表的样式进行删除

 

3.4 操作属性

 tmp.setAttribute(key,value) //设置属性,在标签中添加属性或自定义属性

 tmp.removeAttribute(key) //删除属性,在标签中删除指定属性

 tmp.attributes //获取标签的所有属性

 //我们在做selemium的时候,都需要定位到标签。但是对于display:none的,就获取不到,此时就需要先把该属性去掉,然后才能操作

3.5 创建标签

 createElement(tagName) //通过DOM创建一个标签对象

 appendChild(tagObj) //在父级标签内添加一个子标签对象

 //字符串方式创建标签

 insertAdjacentHTML(where, tagStr) //父级标签内或外添加一个子、兄标签

 beforeBegin //插入到获取到标签的前面

 afterBegin //插入到获取到标签的子标签的前面

 beforeEnd //插入到获取到标签的子标签的后面

 afterEnd //插入到获取到标签的后面

例:在文本框前加一个下拉框

 var tmp = document.getElementById('ctl00_MainContent_chkissuspiciouscustomremark')
var s = document.createElement('select')
s.innerHTML = '<option value ="volvo">Volvo</option><option value ="saab">Saab</option>'
tmp.insertAdjacentElement('beforeBegin',s)

3.6 其他操作

 console.log(msg) //打印数据

 alert() //弹框提示

 confirm() //确认弹框,返回true or false

 location.href //获取当前的url

 location.href = 'http://www.imdsx.cn' //重定向

 location.reload() //刷新

 location.href = location.href //刷新

【前端】DOM操作的更多相关文章

  1. 前端dom操作竟然使得http请求的时间延长了

    最近在项目中遇到了一个奇怪的问题:在google浏览器的调试窗口network下看到一个请求的时间一直是2s多,但是当我把这个请求单独拿出来执行的时候发现根本用不了2s,100多毫秒就完成了.最后再不 ...

  2. 6、前端--DOM操作(查找标签、节点操作、获取值操作、class操作、样式操作、绑定事件、内置参数this)

    DOM操作之查找标签 前缀关键字>>>:document # 基本查找(核心) document.getElementById 根据ID获取一个标签 document.getElem ...

  3. 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo

    前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...

  4. 前端页面卡顿?或是DOM操作惹的祸,需优化代码

    文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...

  5. 前端页面卡顿、也许是DOM操作惹的祸?

    界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化 ...

  6. Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码

    文档对象模型(DOM)是一个独立于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得DOM成为了JavaScri ...

  7. 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM

    前端性能优化--为什么DOM操作慢?   作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩( ...

  8. 前端JavaScript(3)-关于DOM操作的相关案例,JS中的面向对象、定时器、BOM、位置信息

    小例子: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉,就可以 ...

  9. 前端javascript之BOM、DOM操作、事件

    BOM与DOM操作 BOM 浏览器对象模型>>>:使用js操作浏览器 DOM 文档对象模型>>>:使用js操作前端页面 window对象 所有浏览器都支持 wind ...

  10. 前端dom元素的操作优化建议

    参考自:http://blog.csdn.net/xuexiaodong009/article/details/51810252 其实在web开发中,单纯因为js导致性能问题的很少,主要都是因为DOM ...

随机推荐

  1. delphi2010:按键 控制键 组合键的判断 响应

    procedure TForm7.FormShortCut(var Msg: TWMKey; var Handled: Boolean); var   aKey: TShortCut;   aShif ...

  2. Delphi加密解密算法

    // 加密方法一(通过密钥加密解密)function EncryptString(Source, Key: string): string;function UnEncryptString(Sourc ...

  3. 禁止SYS和SYSTEM用户远程登录Oracle oracle的sys和system默认密码

    alter system set remote_login_passwordfile=none scope=spfile; system默认:manager sys默认:change_on_insta ...

  4. C 语言中的关键字 - 数据类型、数据修饰符及逻辑结构

    C 语言中有 32 个关键字.这是留个编译器用的特殊字符串,用户不可以使用. 特殊关键字 sizeof 和 return 是 C 语言中的两个特殊关键字. sizeof sizeof 用于计算变量所占 ...

  5. 如何在linux上部署vue项目

    安装nginx的前奏 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 创建一个文件夹 cd /usr/ ...

  6. Neither abstinence nor excess ever renders man happy

    inch.n. 英寸 courageous.adj.勇敢的 porcelain.n.瓷器 adj.脆的 inventor. n. 发明者 trivial.adj. 不重要的 grove.n.小树林,果 ...

  7. 2.nginx配置详细说明

    Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...

  8. python gevent(协程模块)

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

  9. 应用安全 - 平台 | 工具 - Nexus漏洞汇总

    CVE-2019-5475 Date: 类型: RCE 影响范围: Nexus Repository Manager OSS <= Nexus Repository Manager Pro &l ...

  10. css简介和属性

    CSS指的是层叠样式表(Cascading Style Sheets) 样式定义如何显示HTML元素,通常存储在样式表中. css使用方式 内联式 <!DOCTYPE html> < ...