JavaScript DOM 对象深入了解

什么叫DOM,DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla的浏览器最与标准接近。单纯的Javascript要结合DOM才能做DHTML编程,才能做出漂亮的效果、应用于WEB。这点几乎与其它的语言无异,正如C/C++需要库支持是一样的道理。否则就是单纯的在语法上做研究了。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

查找元素

1、直接查找

方法名

描述

getElementById(id) (document)

获取有指定惟一ID属性值文档中的元素

getElementsByTagName_r(name)

返回当前元素中有指定标记名的子元素的数组

document.getElementsByClassName

根据属性获取标签集合

getAttribute(name)

返回元素的属性值,属性由name指定

1>document.getElementById('id')

不帅

var i = document.getElementById('zhang'); //查找指定的id

i.innerText = '很帅'; //innerText修改指定的字符串

显示效果,当我们打开IE的时候不帅就会被修改为很帅

2>getElementsByTagName_r(name)

不帅

var i = document.getElementByTagNmae('zhang'); //查找指定的name名

i.innerText = '很帅'; //innerText修改指定的字符串

其显示效果一样

3>document.getElementsByClassName

不帅

var i = document.getElementClassName('zhang'); //查找指定的class名

i.innerText = '很帅'; //innerText修改指定的字符串

2、间接查找

属性名

描述

childNodes

返回当前元素所有子元素的数组

childNodes

返回当前元素的所有子元素

firstChild

返回当前元素的第一个下级子元素

lastChild

返回当前元素的最后一个子元素

nextSibling

返回紧跟在当前元素后面的元素

previousSibling

返回紧跟在当前元素前面的元素

parentElement

返回其父节点标签元素

children

返回其所有子标签

firstElementChild

返回第一个子标签元素

lastElementChild

返回最后一个子标签元素

nextElementtSibling

返回下一个兄弟标签元素

previousElementSibling

返回上一个兄弟标签元素

有了W3C DOM,就能编写简单的跨浏览器脚本,从而充分利用XML的强大功能和灵活性,将XML作为浏览器和服务器之间的通信介质。

操作元素

1、动态创建内容时所用的W3C DOM属性和方法

属性/方法

描述

document.createElement_x(tagName)

文档对象上的createElement_x方法可以创建由tagName指定的元素。如果以串div作为方法参数,就会生成一个div元素

document.createTextNode(text)

文档对象的createTextNode方法会创建一个包含静态文本的节点

.appendChild(childNode)

appendChild方法将指定的节点增加到当前元素的子节点列表(作为一个新的子节点)。

.setAttribute(name, value)

这些方法分别获得和设置元素中name属性的值

.insertBefore(newNode, targetNode)

将节点newNode作为当前元素的子节点插到targetNode元素前面

.removeAttribute(name)

这个方法从元素中删除属性name

.removeChild(childNode)

这个方法从元素中删除子元素childNode

.replaceChild(newNode, oldNode)

这个方法将节点oldNode替换为节点newNode

.hasChildnodes()

这个方法返回一个布尔值,指示元素是否有子元素

2、标签内容

innerText 获取标签文本内容

innerHTML 获取HTML内容

value 获取值,即form提交表单的值

即实例如下:

1111
2222

document.getElementsByClassName("zhang").innertext = 123; // 获取类名为zhang的标签并把内容改为123

document.getElementsByClassName("yan").innerHTML = 456; //获取类名为yan的标签并把内容改为456

document.getElementsByClassName("lin").value = "张岩林很帅"; //获取类名为lin的标签并把内容改为张岩林很帅

3、属性

attributes // 获取所有标签属性

setAttribute(key,value) // 设置标签属性

getAttribute(key) // 获取指定标签属性

通过自定义属性可以做一个全选,反选,取消选择的案例,代码如下:

Title

  • 篮球
  • 足球
  • 排球

function Checkall() {

var b = document.getElementsByClassName("c1");

for (var i = 0 ;i < b.length;i++){

var check = b[i];

check.checked = true

}

}

function Cancleall() {

var b = document.getElementsByClassName("c1");

for (var i = 0 ;i < b.length;i++){

var check = b[i];

check.checked = false

}

}

function recvall() {

var b = document.getElementsByClassName("c1");

for (var i = 0 ;i < b.length;i++){

var check = b[i];

if (check.checked){

check.checked = false

}else {

check.checked = true

}

}

}

全选、反选、取消案例

注:onclick是属于点击事件,后面会提到

4、class操作

className // 获取所有类名

classList.remove(cls) // 删除指定类

classList.add(cls) // 添加类

这个东西的用处很大,比如京东里面,当我们鼠标放到全部商品的时候,下面就出现好多商品,其商品是属于隐藏的,触发事件以后他才显示出来,其中间的操作就是定义了一个css隐藏属性,鼠标放上去后,移除CSS隐藏属性;鼠标移走又把隐藏属性给添加上去。

隐藏

.hide{

display: none;

}

放这上面有东西出来,不放东西又消失

张岩林好帅

function mouOver() {

document.getElementById("zhangyanlin").classList.remove("hide");

}

function mouOut() {

document.getElementById("zhangyanlin").classList.add("hide");

}

来个案例醒醒脑

5、标签操作

我们可以通过dom创建标签,添加到指定位置,下面给大家举两种方法来操作标签

// 方式一

var zhang = "";

xxx.insertAdjacentHTML("beforeEnd",zhang);

xxx.insertAdjacentElement('afterBegin',document.createElement('a'))

//注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'

// 方式二

var tag = document.createElement('div')

xxx.appendChild(tag) //往后追加一个div元素

xxx.insertBefore(tag,xxx[1]) //插到指定位置,可根据索引

Title

  • alex
  • eric

function AddElement(ths) {

// 获取输入的值

var val = ths.previousElementSibling.value;

ths.previousElementSibling.value = "";

var commentList = document.getElementById('commentList');

//第一种形式,字符串方式

//var str = "

" + val + "";

// 'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'

// beforeEnd内部最后

// beforeBegin 外部上边

//afterBegin 内部贴身

//afterEnd 外部贴墙

//commentList.insertAdjacentHTML("beforeEnd",str);

//第二种方式,元素的方式

var tag = document.createElement('li');

tag.innerText = val;

var temp = document.createElement('a');

temp.innerText = '百度';

temp.href = "http://etiantian.org";

tag.appendChild(temp);

// commentList.appendChild(tag);

commentList.insertBefore(tag,commentList.children[1]);

}

添加标签操作案例

6、样式操作

张岩林很帅

var obj = document.getElementById('i1');

obj.style.fontSize = "32px";

obj.style.backgroundColor = "red";

效果如下:

来个案例吧,光看知识点多没劲,我们经常会看到输入框里面有那种颜色比较暗的字体,提示你让你输入东西,当你点进去的时候他就消失了,很神奇的操作,他就是通过dom来实现的,废话不多说直接撸码

Title

.bb{

color: #9a9a9a;

}

.aa{

color: black;

}

function inpAtu(ths) {

ths.className = "aa";

var text = ths.value;

if (text == "请输入内容"){

ths.value = "";

}

}

function onBtu(ths) {

var text = ths.value;

if (text == "请输入内容" || text.trim().length == 0){

ths.className = "bb";

ths.value = "请输入内容";

}

}

input输入框提示

7、位置操作

总文档高度

document.documentElement.offsetHeight

当前文档占屏幕高度

document.documentElement.clientHeight

自身高度

tag.offsetHeight

距离上级定位高度

tag.offsetTop

父定位标签

tag.offsetParent

滚动高度

tag.scrollTop

看到这些大家有没有想到网页右下角有个返回顶部,一点就返回到上面了,对没错就是计算这些高度;还有当你鼠标往下拉的时候,左边菜单栏相对应的样式都会变。

body{

margin: 0px;

}

img {

border: 0;

}

ul{

padding: 0;

margin: 0;

list-style: none;

}

h1{

padding: 0;

margin: 0;

}

.clearfix:after {

content: ".";

display: block;

height: 0;

clear: both;

visibility: hidden;

}

.wrap{

width: 980px;

margin: 0 auto;

}

.pg-header{

background-color: #303a40;

-webkit-box-shadow: 0 2px 5px rgba(0,0,0,.2);

-moz-box-shadow: 0 2px 5px rgba(0,0,0,.2);

box-shadow: 0 2px 5px rgba(0,0,0,.2);

}

.pg-header .logo{

float: left;

padding:5px 10px 5px 0px;

}

.pg-header .logo img{

vertical-align: middle;

width: 110px;

height: 40px;

}

.pg-header .nav{

line-height: 50px;

}

.pg-header .nav ul li{

float: left;

}

.pg-header .nav ul li a{

display: block;

color: #ccc;

padding: 0 20px;

text-decoration: none;

font-size: 14px;

}

.pg-header .nav ul li a:hover{

color: #fff;

background-color: #425a66;

}

.pg-body{

}

.pg-body .catalog{

position: absolute;

top:60px;

width: 200px;

background-color: #fafafa;

bottom: 0px;

}

.pg-body .catalog.fixed{

position: fixed;

top:10px;

}

.pg-body .catalog .catalog-item.active{

color: #fff;

background-color: #425a66;

}

.pg-body .content{

position: absolute;

top:60px;

width: 700px;

margin-left: 210px;

background-color: #fafafa;

overflow: auto;

}

.pg-body .content .section{

height: 500px;

border: 1px solid red;

}

  • 首页

  • 功能一

  • 功能二

第1张
第2张
第3张

第一章

第二章

第三章

function ScrollEvent(){

var bodyScrollTop = document.body.scrollTop;

if(bodyScrollTop>50){

document.getElementsByClassName('catalog')[0].classList.add('fixed');

}else{

document.getElementsByClassName('catalog')[0].classList.remove('fixed');

}

var content = document.getElementById('content');

var sections = content.children;

for(var i=0;i

var current_section = sections[i];

// 当前标签距离顶部绝对高度

var scOffTop = current_section.offsetTop + 60;

// 当前标签距离顶部,相对高度

var offTop = scOffTop - bodyScrollTop;

// 当前标签高度

var height = current_section.scrollHeight;

if(offTop<0 && -offTop < height){

// 当前标签添加active

// 其他移除 active

var menus = document.getElementById('catalog').children;

var current_menu = menus[i];

current_menu.classList.add('active');

for(var j=0;j

if(menus[j] == current_menu){

}else{

menus[j].classList.remove('active');

}

}

break;

}

}

}

滚动菜单

Title

.pg-top{

position: fixed;

background-color: #0095bb;

height: 40px;

width: 40px;

bottom: 50px;

right: 40px;

color: whitesmoke;

}

.hide{

display: none;

}

张岩林

返回顶部

function Func() {

var scrollTop = document.body.scrollTop;

var i1 = document.getElementById("i2");

if (scrollTop>20){

i1.classList.remove("hide")

}else {

i1.classList.add("hide")

}

}

function GoTop() {

document.body.scrollTop = 0;

}

返回顶部

8、其他操作

console.log 输出框

alert 弹出框

confirm 确认框

// URL和刷新

location.href 获取URL

location.href = "url" 重定向

location.reload() 重新加载

// 定时器

setInterval 多次定时器

clearInterval 清除多次定时器

setTimeout 单次定时器

clearTimeout 清除单次定时器

给说下定时器吧,定时器比较有用,比如当我们删除一个邮件的时候,会发现弹出一段对话,邮件已删除,这个是单次定时器,多次定时器在自己特定需求的时候,可以用到

// 多次定时器案例

function Interval() {

s1 = setInterval(function () {

console.log(123) //持续输出123

},500);

s1 = setInterval(function () {

console.log(123)

},500);

}

function StopInterval() {

clearInterval(s1); //清除一个多次定时器

}

单次定时器

function Delete() {

document.getElementById("status").innerText = "已删除";

t1 = setTimeout(Clearstatus,1500);

}

function Clearstatus() {

document.getElementById("status").innerText = "";

}

function UnDelete() {

clearTimeout(t1); //清除完定时器,他会一直显示

}

事件

Title

// 普通事件

按钮

var btn = document.getElementById("btn1");

function func() {

alert("普通时间处理")

}

// 0级处理事件

0级处理按钮

var btn = document.getElementById("btn2");

btn.onclick = function () {

alert("0级处理按钮")

};

// btn.onclick = null; // 清除事件处理, 多个事件会被覆盖掉,只剩下最后一个事件

// 2级处理事件

2级处理按钮

var btn = document.getElementById("btn3").addEventListener("click",function () {

alert("二级处理事件1")

});

var btn1= document.getElementById("btn3").addEventListener("click",function () {

alert("二级处理事件2")

});

//不会被覆盖

完整兼容按钮

var btn = document.getElementById("btn4");

if (btn.addEventListener){

btn.addEventListener("click",demo);

}else if(btn.attachEvent){

btn.attachEvent("onclick",demo);

}else {

btn.onclick = demo;

}

function demo() {

alert("整合兼容事件处理")

}

事件列表:

属性

此事件什么时候发生(什么时候被触发)

onabort

图象的加载被中断

onblur

元素失去焦点

onchange

区域的内容被修改

onclick

当用户点击某个对象时调用的事件句柄(比点击input标签时执行上面的代码例子)

ondblclick

当用户双击某个对象时调用的事件句柄

onerror

在加载文档或图像时发生错误

onfocus

元素获得焦点

onkeydown

某个键盘按键被按下

onkeypress

某个键盘按键被按下并松开

onkeyup

某个键盘被松开

onload

一张页面或一副图片完成加载

onmousedown

鼠标按钮被按下

onmousemove

鼠标移动过来后

onmouseout

鼠标从某个元素移开

onmouseover

鼠标移动到某个元素之上

onmouseup

鼠标按键被松开

onreset

重置按钮被点击

onresize

窗口或框架被重新调整大小

onselect

文本被选中

onsubmit

确认按钮被点击

onunload

用户退出页面

注:一个标签可以绑定多个事件,this标签当前正在操作的标签,event封装了当前事件的内容。

来几个案例吧,不然看完了感觉跟没看一个样

Title

ul{

list-style: none;

padding: 0;

margin: 0;

}

ul li{

float: left;

background-color: #038CAE;

color: white;

padding: 15px 20px;

}

.clearfix:after{

display: block;

content: '.';

height: 0;

visibility: hidden;

clear: both;

}

.hide{

display: none;

}

.tab-menu{

border: 1px solid #dddddd;

}

.tab-menu .title{

background-color: #dddddd;

}

.tab-menu .title .active{

background-color: white;

color: black;

border-top: 2px solid red;

}

.tab-menu .content{

border: 1px solid #dddddd;

min-height: 150px;

}

  • 价格趋势
  • 市场分布
  • 其他
content1
content2
content3

function Show(ths) {

var target = ths.getAttribute('target');

ths.className = 'active';

var brother = ths.parentElement.children;

for (var i=0;i

if (ths == brother[i]){

}else {

brother[i].removeAttribute("class");

}

}

var content = document.getElementById("content").children;

for (var j=0;j

var current_content = content[j];

var con = current_content.getAttribute("con");

if (con == target){

current_content.classList.remove("hide");

}else {

current_content.className = "hide";

}

}

}

标签菜单案例

Title

123
123
123
123
123
123
123
123

function Func() {

// i1

// i1所有孩子,循环每一个孩子,判断如果alex=‘sb'

var i1 = document.getElementById('i1');

var divs = i1.children;

for(var i=0;i

var current_div = divs[i];

var result = current_div.getAttribute('alex');

// console.log(result);

if(result == "sb"){

current_div.innerText = "456";

}

}

}

通过自定义属性改变元素值

以上这篇JavaScript DOM 对象深入了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。相关阅读:

win10怎么整理资源管理器让她变得干净且简洁?

MAC Spotlight 索引打乱后如何手动重建

jquery实现的简单二级菜单效果代码

让fedora正常显示windows下的中文名文件

Android编程中常用适配器及自定义适配器用法实例分析

Enterprise Library for .NET Framework 2.0缓存使用实例

jQuery插件scroll实现无缝滚动效果

PHP实现多维数组转字符串和多维数组转一维数组的方法

C#实现简单获取及设置Session类

你应该知道PHP浮点数知识

jQuery实现的导航下拉菜单效果

android按行读取文件内容的几个方法

ci检测是ajax还是页面post提交数据的方法

php提示Warning:mysql_fetch_array() expects的解决方法

php dom对象,JavaScript_JavaScript DOM 对象深入了解,什么叫DOM,DOM是文档对象模型( - phpStudy...相关推荐

  1. jquery jQuery的入口函数 $函数 dom对象和jquery对象

    文章目录 jquery jQuery的入口函数 $函数 dom对象和jquery对象 jQuery的入口函数 视频 代码 $函数 视频 代码 dom对象和jquery对象 视频 代码 jquery j ...

  2. DOM对象与jquery对象有什么不同

    jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...

  3. js中的DOM对象和jQuery对象的比较

    1. 二者的不同之处: 通过jQuery获取的元素是一个数组, 数组中包含着原生JS中的DOM对象. 例如, 针对下面的一个div结构: <div id="Box">& ...

  4. Js - Dom原生对象和jQuery对象的联系、区别、相互转换

    Dom原生对象和jQuery对象的联系.区别.相互转换: 联系: 1.jQuery对象:通过jQuery包装DOM对象后产生的对象: 2.两者之间可以相互转换: 区别: 1.jquery选择器得到的j ...

  5. JS对象与Dom对象与jQuery对象之间的区别

    前言 通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的 $("#save&qu ...

  6. dom定义了访问html文档对象的,HTML DOM (文档对象模型)

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 DO ...

  7. java与jquery的选择器区别_java day44【JQuery 基础:概念,快速入门,JQuery对象和JS对象区别与转换,选择器,DOM操作,案例】...

    第一章JQuery 基础 1. 概念: 一个JavaScript框架.简化JS开发 * jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScrip ...

  8. (四)DOM对象和jQuery对象

    学习jQuery,需要搞清楚DOM对象和jQuery对象的关系与区别,因为两者的方法并不共用,如果搞不清楚对象类型就会导致调用错误的方法. DOM(Document Object Model)称为文档 ...

  9. DOM-1 DOM初探、JS对象、XML、幻灯片案例展示

    DOM DOM -- Document Object Model(文档对象模型) DOM 对象 → 宿主对象(是浏览器提供的) 通过浏览器提供的方法表示或操作HTML和XML 不能操作css 标签:& ...

  10. Dom对象、JavaScript对象、jQuery对象区别

    一.Dom对象.JavaScript对象.jQuery对象 1.1 Dom对象 文档对象模型简称DOM,是W3C组织推荐的处理可扩展置标语言的标准编程接口. DOM实际上是以面向对象方式描述的文档模型 ...

最新文章

  1. 怎样成为php高手,怎么成为php高手?如何自学成为php高手?优秀的PHP开发者是怎样炼成的?-PHP教程-基础篇-php语法基础--创业的风,吹向了年轻之长藤个人博客网站...
  2. 3dContactPointAnnotationTool开发日志(三三)
  3. 计算机网络【四】数据链路层基本概念+点到点通信(PPP协议)
  4. MD5加密方式-工具类
  5. Python笔记-假设检验之双样本T检验(两样本是否相似)
  6. 无纸化办公软件app 快用这款科学处理办公事宜的便签
  7. 【雪野实训记录】Oracle数据库 T4作业——事务和数据库对象
  8. 互联网新半场的流量生态——阿里云定向免流方案
  9. WVS与Arachni漏扫工具对比实验
  10. linux mac 字体,Mac 和 Windows 的中文字体显示效果
  11. 微信开发者工具button,input鼠标点击坐标偏移
  12. 百度与虚假广告的博弈
  13. Java 程序是如何执行的
  14. Java多线程案例-Java多线程(3)
  15. 第25届ccf-csp认证赛后
  16. 手机html5游戏内存修改,一种防止游戏被内存修改器修改的方法
  17. 数据结构与算法A 查找
  18. Windows远程桌面连接不上问题
  19. 【C语言】:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
  20. python(自用手册)三

热门文章

  1. 到底如何保证线程安全,总结得太好了!
  2. 为什么谷歌要执行严格的代码编写规范?
  3. 一入职!就遇到上亿(MySQL)大表的优化....
  4. 为什么我旗帜鲜明的反对前后端分离
  5. linux共享文件丢失,linux基础应用(NFS文件共享)
  6. Django初级手册1-项目和应用的创建与简单的数据库操作
  7. 对unidbgrid的单元格操作
  8. javascript入门之算术乘法表
  9. SQL-Server2008数据库异常报错
  10. 结对-四则运算答题器-开发环境搭建过程