05.DOM
DOM基础
什么是DOM 标签元素节点
浏览器支持情况 火狐支持最好 谷歌其次 ie最差 尤其是ie6-8
DOM节点
节点分为:元素节点和文本节点 测试节点的类型用nodeType
nodeType 为3时是文本节点
nodeType 为1时是元素节点
childNodes 节点 不兼容要做判断 一般用children
children子节点只算第一层
parentNode父节点
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <script>
- window.onload=function ()
- {
- var aA=document.getElementsByTagName('a');
- for(var i=0;i<aA.length;i++)
- {
- aA[i].onclick=function ()
- {
- this.parentNode.style.display='none';
- };
- }
- };
- </script>
- </head>
- <body>
- <ul id="ul1">
- <li>dfasdf <a href="javascript:;">隐藏</a></li>
- <li>45346 <a href="javascript:;">隐藏</a></li>
- <li>fghfgcvn <a href="javascript:;">隐藏</a></li>
- <li>vcbxcvbc <a href="javascript:;">隐藏</a></li>
- <li>757465867 <a href="javascript:;">隐藏</a></li>
- </ul>
- </body>
- </html>
offsetParent
获取对应定位的父元素
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <style>
- #div1 {width:200px; height:200px; background:#CCC; margin:100px; }
- #div2 {width:100px; height:100px; background:red; position:absolute; left:50px; top:50px;}
- </style>
- <script>
- window.onload=function ()
- {
- var oDiv2=document.getElementById('div2');
- alert(oDiv2.offsetParent);//弹出的是object HTMLBodyElement 因为div1没有设置相对定位,所以div2是相对body定位的
- };
- </script>
- </head>
- <body>
- <div id="div1">
- <div id="div2"></div>
- </div>
- </body>
- </html>
首尾子节点 有兼容性问题
firstChild、firstElementChild
lastChild 、lastElementChild
兄弟节点 有兼容性问题
nextSibling、nextElementSibling
previousSibling、previousElementSibling
- <script>
- window.onload=function ()
- {
- var oUl=document.getElementById('ul1');
- //IE6-8
- //oUl.firstChild.style.background='red';
- //高级浏览器
- //oUl.firstElementChild.style.background='red';
- if(oUl.firstElementChild)
- {
- oUl.firstElementChild.style.background='red';
- }
- else
- {
- oUl.firstChild.style.background='red';
- }
- };
- </script>
- <ul id="ul1">
- <li>1</li>
- <li>2</li>
- <li>3</li>
- </ul>
元素属性操作
第一种:oDiv.style.display=“block”;
第二种:oDiv.style[“display”]=“block”;
第三种:Dom方式
DOM方式操作元素属性
获取:getAttribute(名称)
设置:setAttribute(名称, 值)
删除:removeAttribute(名称)
- <script>
- window.onload=function ()
- {
- var oTxt=document.getElementById('txt1');
- var oBtn=document.getElementById('btn1');
- oBtn.onclick=function ()
- {
- //oTxt.value='123';
- //oTxt['value']='123';
- oTxt.setAttribute('value', '123');
- };
- };
- </script>
- <input id="txt1" type="text" />
- <input id="btn1" type="button" value="按钮" />
用className选择元素
如何用className选择元素
选出所有元素
通过className条件筛选
封装成函数
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <script>
- function getByClass(oParent, sClass)
- {
- var aResult=[];
- var aEle=oParent.getElementsByTagName('*');
- for(var i=0;i<aEle.length;i++)
- {
- if(aEle[i].className==sClass)//找到所有要找的class
- {
- aResult.push(aEle[i]);//放进数组里
- }
- }
- return aResult;
- }
- window.onload=function ()
- {
- var oUl=document.getElementById('ul1');
- var aBox=getByClass(oUl, 'box');
- for(var i=0;i<aBox.length;i++)
- {
- aBox[i].style.background='red';
- }
- };
- </script>
- </head>
- <body>
- <ul id="ul1">
- <li class="box"></li>
- <li class="box"></li>
- <li></li>
- <li></li>
- <li></li>
- <li class="box"></li>
- <li></li>
- </ul>
- </body>
- </html>
创建、插入和删除元素
createElement(标签名) 创建一个节点
appendChild(节点) 追加一个节点
插入元素 insertBefore(节点, 原有节点) 在已有元素前插入
例子:倒序插入li
删除DOM元素
removeChild(节点) 删除一个节点 例子:删除li
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <script>
- window.onload=function ()
- {
- var aA=document.getElementsByTagName('a');
- var oUl=document.getElementById('ul1');
- for(var i=0;i<aA.length;i++)
- {
- aA[i].onclick=function ()
- {
- oUl.removeChild(this.parentNode);
- };
- }
- };
- </script>
- </head>
- <body>
- <ul id="ul1">
- <li>asfasd <a href="javascript:;">删除</a></li>
- <li>5645 <a href="javascript:;">删除</a></li>
- <li>ghdfjgj <a href="javascript:;">删除</a></li>
- <li>mvbnmvnb <a href="javascript:;">删除</a></li>
- </ul>
- </body>
- </html>
串联例子
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <script>
- window.onload=function ()
- {
- var oBtn=document.getElementById('btn1');
- var oUl=document.getElementById('ul1');
- var oTxt=document.getElementById('txt1');
- oBtn.onclick=function ()
- {
- var oLi=document.createElement('li');//创建li
- var aLi=oUl.getElementsByTagName('li');
- oLi.innerHTML=oTxt.value;
- //父级.appendChild(子节点);
- //oUl.appendChild(oLi);
- if(aLi.length>0)//判断存不存在第一个节点
- {
- oUl.insertBefore(oLi, aLi[0]);//存在插入之前元素的 前面
- }
- else
- {
- oUl.appendChild(oLi);//不存在直接插入父元素
- }
- };
- };
- </script>
- </head>
- <body>
- <input id="txt1" type="text"/>
- <input id="btn1" type="button" value="创建li"/>
- <ul id="ul1">
- </ul>
- </body>
- </html>
文档碎片 文档碎片可以提高DOM操作性能(理论上) 文档碎片原理 document.createDocumentFragment()
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8">
- <title>无标题文档</title>
- <script>
- window.onload=function ()
- {
- var oUl=document.getElementById('ul1');
- var oFrag=document.createDocumentFragment();
- for(var i=0;i<10000;i++)
- {
- var oLi=document.createElement('li');
- oFrag.appendChild(oLi);
- }
- oUl.appendChild(oFrag);
- };
- </script>
- </head>
- <body>
- <ul id="ul1">
- </ul>
- </body>
- </html>
05.DOM的更多相关文章
- 2016.01.05 DOM笔记(一) 查找元素
DOM节点的种类 元素和标签是一个意思,例如<body>标签或者称为<body>元素 节点DOM的节点分为三类 元素节点,文本节点,属性节点 例如 <div id=‘b ...
- 自定义属性,innerHTML,outerHTML,dom节点的获取,className,tagName,更改或者是获取css属性
01.自定义属性 1.自定义属性: 作用:保存数据 通用的自定义属性的前缀 data-属性="属性值" 注:自定义的属性不能通过 元素.属性 取属性值 ,需使用getAttribu ...
- 20 个使用原生 JavaScript 实现的 Web 项目
20 个使用原生 JavaScript 实现的 Web 项目 20 vanilla JavaScript Web Projects https://github.com/learning-js-by- ...
- 05浏览器-02-操作DOM
1.DOM操作梗概 本篇内容实际上在另一篇笔记<从JS和jQuery浅谈DOM操作>已经提到了重点的地方,可以戳链接另外进行阅读. 以前提到过,实际上HTML在被浏览器加载以后,会变成 & ...
- 05 JS基础DOM
JS的window对象定时器: window下一些方法: <script> 弹出 window.alert('hello') 返回布尔值 var ret = window.confirm( ...
- 05 javascript知识点---BOM和DOM
1.DOM简单学习(为了满足案例要求) 功能:控制html文档的内容获取页面标签(元素)对象:Element document.getElementById("id值"):通过元素 ...
- JavaScript学习05(操作DOM)
操作DOM DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被结构化为对象树: 通过这个对象模型,Java ...
- 05 BOM与DOM
BOM和DOM 1. 什么是BOM和DOM 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的 ...
- SAX与DOM
http://www.cnblogs.com/zhulin/archive/2012/05/03/2480962.html 在解析xml时(如浏览器解析html标签),主要存在两种方式:SAX模式和D ...
随机推荐
- $_session (应用)
登录: 封装类(用于连接数据库)代码中创建一个对象最好可以重复使用 <?php class DBDA { public $host="localhost"; public $ ...
- struts2 No result defined for action XXX and result input
这种错误的原因一般是页面的属性和action里的属性个数.名称.类型不一致造成的 困扰了我一下午的问题,原来是表单中有两个input-text的name属性重复了,然后接受参数的时候就出现了这个错误 ...
- JDBC的操作总结
JDBC 操作总结 JDBC是一组能够执行SQL语句的API JDBC的操作方式比较单一,简单的分为以下几个流程: 1.通过数据库厂商提供的JDB类库想DriverManager注册数据库驱动 ...
- Android 敏感 API 的说明
从中国的国情来看,Google 的诸多产品,包括 gmail,Android 官方市场 Google Play 正处于并将长期处于访问不了的状态.国内几亿网民也要生活,于是墙内出现了“百家争鸣”的场面 ...
- oracle 11.2.0.4单实例文件系统安装与补丁
[TOC] 一,预安装处理 1.版本准备 操作系统:RHEL 6.5 数据库版本:Oracle 11.2.0.4 相关包:p13390677_112040_Linux-x86-64_1of7.zip ...
- 安装Python环境时遇到的问题
问题描述:An error occurred during the installation of assembly 'Microsoft.VC90.MFC,version="9.0.210 ...
- Python的多类型传值和冗余参数
多类型传值(向函数中传递元组和字典) 1 向函数中传递元组 def func(x,y): print x+y 调用这个函数的时候,我们只需要传入两个变量就可以了,但是比如我有一个元组t = ( ...
- tomcat热部署
tomcat默认支持热部署,修改文件会自动加载部署,不需要重启容器 server.xml配置如下所示 autoDeploy=”true” — 自动部署 reloadable=”true” — 自动加载
- VadRoot枚举进程模块在Windows7下的完整实现
原理小伟的小伟在http://bbs.pediy.com/showthread.php?t=66886说的挺清楚了,Windows7下有一些变化,使用NtQueryVirtualMemory来枚举 ...
- ring3硬件断点
4个断点寄存器DR0~DR3用来设置断点的线性地址. DR6为状态寄存器,DR7为控制寄存器. DR4和DR5保留.当CR4.DE==1时,访问DR4和DR5产生#UD异常:IF CR4.DE==0, ...