DOM文档对象模型
DOM文档对象模型是基于HTML树的api,这里可以把HTML结构看成是一颗树形结构,使用DOM可以操作树中的节点,即操作(增删改查)HTML标签。

上图是一个简单的DOM树形结构图,可以使用document对象获取DOM,这个对象是window对象下的,在使用时,可以省略window。
可以把一个HTML标签看做是一个对象,标签中的属性对应的就是对象中的属性,DOM提供了访问他们的方法。

getElementById
getElementById根据html标签的id来获取标签对象:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getElementById</title>
</head>
<body><form name="baseInfo" action="#" method="post">姓名:<input type="text"   id="name"><br>密码:<input type="password"  id="pwd" ><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">var username = document.getElementById("name");var pwd = document.getElementById("pwd");var btn = document.getElementById("btn");btn.onclick = function(){alert(username.value);alert(pwd.value);};
</script>
</html>

getElementsByName
getElementsByName根据html标签的name来获取一个数组对象,在html标签中name值是可以重复的,所以该方法会返回一个数组对象:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getElementsByName</title>
</head>
<body><form name="baseInfo" action="#" method="post">input:<input type="text" value="value1"  name="monkey"><br>input:<input type="text" value="value2"  name="monkey"><br>input:<input type="text" value="value3" name="monkey"><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">var arr = document.getElementsByName("monkey");//alert(arr.length);/*for(index in arr){if(!arr.hasOwnProperty(index)){continue;}alert(arr[index].value);}*/for(var i=0; i<arr.length; i++){alert(arr[i].value);}
</script>
</html>

getElementsByTagName
getElementsByTagName根据标签的名字来获取数组对象:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getElementsByTagName</title>
</head>
<body><form name="baseInfo" action="#" method="post">input:<input type="text" value="value1" name="name"><br>input:<input type="text"  value="value2" name="name"><br>input:<input type="text"  value="value3"  name="name"><br><select name="hobby" id="hobby"><option value="basketball">篮球</option><option value="football">足球</option><option value="volleyball">排球</option></select><br><select name="star" id="star" ><option value="cl">成龙</option><option value="llj">李连杰</option><option value="zzd">甄子丹</option><option value="wj">吴京</option></select><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">/*//获取所有的input元素var inputArr = document.getElementsByTagName("input");alert(inputArr.length);//输出input中type="text"中的 value属性值for(var i=0; i<inputArr.length; i++){if("text" == inputArr[i].type){alert(inputArr[i].value);}}//输出所有option标签中value的值var optionArr = document.getElementsByTagName("option");for(var i=0; i<optionArr.length; i++){alert(optionArr[i].value);}//输出所有下拉框 id="star"中option标签中 value属性的值var star = document.getElementById("star");var optionArr = star.getElementsByTagName("option");for(var i=0; i<optionArr.length; i++){alert(optionArr[i].value);}*///输出下拉框中被选中的value值var btn = document.getElementById("btn");btn.onclick = function(){var optionArr = document.getElementsByTagName("option");for(var i=0; i<optionArr.length; i++){if(optionArr[i].selected){alert(optionArr[i].value);    }}};</script>
</html>

hasChildNodes
hasChildNodes判断当前html标签对象下是否包含子节点。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hasChildNodes</title>
</head>
<body><form name="baseInfo" action="#" method="post">input:<input type="text" value="value1" name="name" id="id1"><br>input:<input type="text"  value="value2" name="name"><br>input:<input type="text"  value="value3"  name="name"><br><select name="hobby" id="hobby"><option value="basketball">篮球</option><option value="football">足球</option><option value="volleyball">排球</option></select><br><select name="star" id="star" ><option value="cl">成龙</option><option value="llj">李连杰</option><option value="zzd">甄子丹</option><option value="wj">吴京</option></select><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">//查看id="hobby"的节点是否含有子节点var hobby = document.getElementById("hobby");alert(hobby.hasChildNodes());//查看id="id1"的节点是否含有子节点var id1 = document.getElementById("id1");alert(id1.hasChildNodes());
</script>
</html>

nodeName、nodeType和nodeValue
在文档中每个节点都有这三个属性:

nodeName,获取节点名字

  • 如果节点是元素节点,nodeName返回这个元素的名称
  • 如果是属性节点,nodeName返回这个属性的名称
  • 如果是文本节点,返回一个内容为#text的字符串

nodeType,返回一个整数,数值表示节点的类型,常用的有下面三个:

  • 元素节点,返回1
  • 属性节点,返回2
  • 文本节点,返回3

nodeValue,获取节点的当前值

  • 元素节点,null
  • 属性节点,当前属性的值
  • 文本节点,返回文本内容
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>节点名称类型和值</title>
</head>
<body><form name="baseInfo" action="#" method="post">input:<input type="text" value="value1" id="monkey1" name="monkey"><br>input:<input type="text" value="value2"  name="monkey"><br>input:<input type="text" value="value3" name="monkey"><br><input type="button" id="btn" name="submit" value="提交" /></form><a id="java" href="http://www.monkey1024.com">java教程</a>
</body>
<script type="text/javascript">/*//元素节点var node = document.getElementById("monkey1");alert(node.nodeName);alert(node.nodeType);alert(node.nodeValue);//文本节点var node = document.getElementById("java");var textNode = node.firstChild;//获取第一个子标签alert(textNode.nodeName);alert(textNode.nodeType);alert(textNode.nodeValue);*///属性节点var node = document.getElementById("java");var attrNode = node.getAttributeNode("href");//获取第一个子标签alert(attrNode.nodeName);alert(attrNode.nodeType);alert(attrNode.nodeValue);
</script>
</html>

replaceNode
replaceNode替换节点

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>replaceNode</title>
</head>
<body><form name="baseInfo" action="#" method="post">input:<input type="text" value="value1" name="name" id="id1"><br>input:<input type="text"  value="value2" name="name"><br>input:<input type="text"  value="value3"  name="name"><br><select name="hobby" id="hobby"><option value="basketball">篮球</option><option value="football">足球</option><option id="volleyball" value="volleyball">排球</option></select><br><select name="star" id="star" ><option value="cl">成龙</option><option value="llj">李连杰</option><option value="zzd">甄子丹</option><option id="wj" value="wj">吴京</option></select><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">var hobby = document.getElementById("hobby");var star = document.getElementById("star");var volleyball = document.getElementById("volleyball");var wj = document.getElementById("wj");hobby.onclick = function(){hobby.replaceChild(wj,volleyball);};
</script>
</html>

getAttribute
getAttribute获取标签中的属性,除了使用对象名.属性名的方式来获取属性之外还可以使用getAttribute()方法来获取指定的属性值。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getAttribute</title>
</head>
<body><form name="baseInfo" action="#" method="post">姓名:<input type="text"  id="name"><br>密码:<input type="password"  id="pwd" ><br><input type="button" id="btn" name="submit" value="提交" /></form>
</body>
<script type="text/javascript">var username = document.getElementById("name");var nameType = username.getAttribute("type");alert(nameType);
</script>
</html>

setAttribute
setAttribute给对象添加属性,如下代码,3秒后给div添加style属性将字体设置为红色:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>setAttribute</title>
</head>
<body><div id="d1">好好学习javascript</div>
</body>
<script type="text/javascript">var d1 = document.getElementById("d1");setTimeout(function(){d1.setAttribute("style","color:red");},3000);
</script>
</html>
createElement
createElement可以创建一个标签,createTextNode向标签中添加文本,如下代码,向下拉框中添加一个选项:<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>createElement</title>
</head>
<body><form name="baseInfo" action="#" method="post"><select name="hobby" id="hobby"><option value="basketball">篮球</option><option value="football">足球</option><option value="volleyball">排球</option></select></form>
</body>
<script type="text/javascript">/*在下拉框中增加一个跑步的选项*///创建option标签var optionNew = document.createElement("option");//添加属性optionNew.setAttribute("value","run");//添加文本var txt = document.createTextNode("跑步");optionNew.appendChild(txt);//将标签加入到select中var hobby = document.getElementById("hobby");hobby.appendChild(optionNew);
</script>
</html>
insertBefore
insertBefore在指定位置之前插入标签。<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertBefore</title>
</head>
<body><form name="baseInfo" action="#" method="post"><select name="hobby" id="hobby"><option value="basketball">篮球</option><option id="football" value="football">足球</option><option value="volleyball">排球</option></select></form>
</body>
<script type="text/javascript">var optionNew = document.createElement("option");//添加属性optionNew.setAttribute("value","run");//添加文本var txt = document.createTextNode("跑步");optionNew.appendChild(txt);//将标签加入到select中var hobby = document.getElementById("hobby");var football = document.getElementById("football");hobby.insertBefore(optionNew,football);//hobby.insertBefore(optionNew,hobby.options[2]);
</script>
</html>

removeChild
removeChild删除指定元素。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>removeChild</title>
</head>
<body><form name="baseInfo" action="#" method="post"><select name="hobby" id="hobby"><option value="basketball">篮球</option><option id="football" value="football">足球</option><option id="volleyball" value="volleyball">排球</option></select></form>
</body>
<script type="text/javascript">var hobby = document.getElementById("hobby");var volleyball = document.getElementById("volleyball");hobby.removeChild(volleyball);
</script>
</html>

innerHTML
大部分浏览器中都支持innerHTML,但是他不是DOM标准的组成部分。可以使用innerHTML获取对象的内容。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>innerHTML</title>
</head>
<body><table><tr id="tr1"><td id="td1">数学</td><td id="td2">语文</td></tr></table><div id="d1">好好学习java</div>
</body>
<script type="text/javascript">var t = document.getElementById("tr1");alert(t.innerHTML);setTimeout(function() {var d1 = document.getElementById("d1");d1.innerHTML = "我想打篮球";}, 3000);
</script>
</html>

javascript之DOM简介相关推荐

  1. 前端:JS/27/HTML DOM简介和新特性,HTML DOM访问HTML元素的方法,元素对象的属性(标准属性),noscroll事件,实例:书讯快递

    HTML DOM简介和新特性 1,HTML DOM简介 核心DOM中,提供的属性和方法,已经可以操作网页了,为什么还要HTML DOM? 如果在核心DOM中,网页中节点层级很深时,访问这个节点时将十分 ...

  2. 前端:JS/24/BOM和DOM简介,for...in循环遍历,window对象的属性和方法,延时器,定时器,screen屏幕对象,location地址栏对象,history历史记录对象

    BOM 和DOM简介 BOM ,Browser Object Model ,浏览器对象模型: BOM主要提供了访问和操作浏览器各组件的方式: 浏览器组件:window(浏览器容器), location ...

  3. JavaScript事件冒泡简介及应用

    JavaScript事件冒泡简介及应用 一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件 ...

  4. JavaScript的DOM知识点总结

    目录 1.DOM重点核心 2.DOM事件流 3.DOM知识点总结 4.常见案例 视频资料,pink老师讲的超级详细,JavaScript的DOM操作:黑马程序员JavaScript核心教程,前端基础教 ...

  5. JavaScript之DOM学习笔记

    目录 1.DOM简介 1.1.什么是DOM 2.获取元素 2.1.如何获取页面元素 2.2.根据ID获取 2.3.根据标签名获取 2.4.通过H5新增方法获取 3.事件基础 3.1.事件概述 3.2. ...

  6. JavaScript核心 DOM 和 BOM操作

    JavaScript核心 DOM 和 BOM操作 Web APIs 简介 1. Web APIs 和 JS 基础关联性 1.1 JS 的组成 1.2 JS 基础阶段以及 Web APIs 阶段 JS ...

  7. JavaScript 操作DOM对象

    1)JavaScript  操作DOM對象 1.DOM:是Document  Object  Model 的缩写,及文档对象模型 2.DOM通常分为三类:DOM Core(核心).HTML-DOM 和 ...

  8. 计算机高级程序开发,2017计算机javascript高级程序设计简介

    2017计算机javascript高级程序设计简介 在JavaScript面世之初,没有人会想到它会被应用的如此广泛,也远比一般人想象中的要复杂强大的多.下面小编整理的关于计算机javascript高 ...

  9. 深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手

    文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API. Javascript和 ...

最新文章

  1. ICLR 2020被爆半数审稿人无相关领域经验,同行评审制度在垮塌?
  2. 6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈
  3. Android Studio如何减小APK体积
  4. MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
  5. 小米笔记本bios版本大全_初级用户应该学习的BIOS知识
  6. linux 下 pip 安装教程6,在CentOS下安装pip
  7. tensorflow Dataset操作
  8. vue .native 方法未定义_技术分享谈谈Vue的响应式原理
  9. Vue-多个Vue实例、注册全局组件,Fetch、axios
  10. 桌面虚拟化正处于导入期
  11. Unity之ASE 图片遮罩
  12. 剪刀石头布(你出一个版)
  13. 英语议论文万能模板范文 英语作文范文欣赏
  14. ​六号美术馆 基于以太坊区块链上的区块链游戏
  15. 提取文章中的人名php,php中实现将姓名拆分为姓氏和名字
  16. 如何设计一个报表引擎
  17. 蓝牙只让搜到耳机,不让搜到手机,同时不让别人搜到自己 O版本
  18. python高级绘图师_matplotlib库-python中的绘图师
  19. 深入理解D3D12资源状态转换
  20. 薰衣草的花语~~~~~~等待爱情

热门文章

  1. ege寻宝挑战游戏(C、C++)(大一上游戏项目)
  2. 基于canal根据配置实现数据库数据的同步
  3. 形象理解二维傅里叶变换
  4. 常用网址收藏 (zz)
  5. 【Pandas】解决在pandas中的两个正数相乘结果为负值
  6. CoreDNS介绍以及解析流程【kubernetes】
  7. NOI2019 游记
  8. Angular 脚手架
  9. SpringCloud2.0
  10. CGB2105-Day03