11.JavaScript外部对象-DOM
来源:互联网 发布:linux 修改mac地址 编辑:程序博客网 时间:2024/06/06 01:45
document对象
DOM概述
DOM概述、DOM节点树、DOM操作
读取、修改
节点信息、元素节点的内容、节点属性、元素节点的样式
查询
查询节点、根据元素的id查询节点、根据层次查询节点、根据标签名查询节点、根据 name查询节点
增加
创建新节点、添加新节点
删除
删除节点
DOM概述
Document Object Model:文档对象模型
当网页被加载时,浏览器会创建页面的文档对象模型
通过可编程的对象模型,JavaScript获得了足够的能力来创建动态的HTML
JavaScript能改变页面中的所有HTML元素、属性
JavaScript能改变页面中的所有CSS样式
JavaScript能对页面中的所有事件作出反应
DOM节点树
DOM提供了如下操作
查找节点、读取节点信息、修改节点信息、创建新节点、删除节点
节点信息:
nodeName:节点名称
元素节点和属性节点:标签或属性名称
文本节点:#text
文档节点:#document
nodeType:节点类型
返回值
元素节点:返回1
属性节点:返回2
文本节点:返回3
注释节点:返回8
文档节点:返回9
元素节点的内容:
innerText:设置或获取位于对象起始和结束标签的文本
innerHTML:设置或获取位于对象起始和结束标签内的HTML
节点属性:
getAttribute()方法:根据属性名称获取属性的值
setAttribute()、removeAttribute()
将HTML标记、属性和CSS都对象化
元素节点的样式:
style属性
node.style.color
node.style.fontsize
className属性
Demo
<script> //onload是页面加载事件,在页面加载完成时自动触发,触发时调用对应的匿名函数 window.onload = function(){ //1.读取节点的名称及类型 var p1 = document.getElementById(“p1”); console.log(p1.nodeName); ---> P console.log(p1.nodeType); ---> 1 //2.读写节点的内容(双标签中间的内容) //2.1 innerHTML(支持标签) console.log(p1.innerHTML); ---> DOM操作可以<b>读写</b>节点 p1.innerHTML = “DOM操作可以<u>读写</u>节点”; //2.2innerText(不支持标签) var p2 = document.getElementById(“p2”); console.log(p2.innerText); ---> DOM操作可以查询节点 p2.innerText = “DOM操作可以<i>查询</i>节点”; //3.读写节点的值 //只有如下表单控件有值:input textarea select input.value var s1 = document.getElementById(“s1”); console.log(s1.value); ---> Beijing //4.读写节点的属性 //4.1通过方法读写(麻烦、万能) var img = document.getElementById(“i1”); console.log(img.getAttribute(“src”)); ---> 1.jpg img.setAttribute(“src”, “2.jpg”); img.removeAttribute(“src”); //4.2通过属性名读写(简单、量少) //举例: //读:span.className() //写:span.className = “OK”; //只有class style id可以通过这种方式读写,其他属性是非标注的API //即:新版浏览器可以使用,但是旧版浏览器不支持(如:a.ref) var a = document.getElementById(“a1”); console.log(a.style); ---> CSSStyleDeclaration{...} a.style.color = “blue”; }</script><body> <p id=”p1”>DOM操作可以<b>读写</b>节点</p> <p id=”p2”>DOM操作可以<b>查询</b>节点</p> <p id=”p3”>DOM操作可以<b>增删</b>节点</p> <select id=”s1”> <option>Beijing</option> </select> <p> <img src=”1.jpg” id=”i1”> </p> <a href =“#” style=”color:red” id=”a1”>Top</a></body>
case1:picture turn
功能实现:鼠标离开照片,切换照片,鼠标悬停,停止切换
<style> div { border/width/height } .show{ display: inline-block; } .hide { display: online; }</style><script> var id; //轮播次数 var n=0; function picture_turn{ id = setInterval(function(){ n++; //获取所有图片,s复数,不止一个节点,得到的是一个节点 var imgs = document.getElementsByTagName(“img”); //遍历、隐藏 //如果imgs.className=”hide”,除第一张图片显示,其他隐藏,然后逐个显示, //垂直显示的块元素 for(var i=0; i<imgs.length; i++){ imgs[i].className = “hide”; } var next = n%imgs.length; imgs[next].className = “show”; }, 2000); } function stop_turn() { clearInterval(id); }</script><body> <!-- onmouseover:鼠标悬停事件,onmouseout:鼠标离开事件 --> <div onmouseover=”stop_turn;” onmouseover=”onmouseleave();”> <img src=”1.jpg”/> <img src=”2.jpg” class=”hide”/> <img src=”3.jpg” class=”hide”/> <img src=”4.jpg” class=”hide”/></div></body>
查询节点
如果需要操作HTML元素,必须首先找到该元素
查询节点的方式:
通过id查询:
document.getElementById()
通过指定的ID来返回元素节点,忽略文档的结构,
查找整个HTML文档中的任何HTML元素
如果id错误,则返回null
通过层次(节点名)查询
parentNode
遵循文档的上下层次结构,查找单个父节点
childNodes
遵循文档的上下层次结构,查找多个子节点
通过标签名查询
document.getElementsByTagName()
根据指定的标签名称返回所有的元素
忽略文档的结构
查找整个HTML文档中的所有元素
如果标签名错误,则返回长度为0的节点列表
返回一个节点列表(数组)
使用节点列表的length属性获取个数
[index]:定位具体的元素
通过name属性查询
document.getElementsByName();
case:search、create、delete
<script> window.onload = function() { //根据name查询一组节点 var inputs = document.getElementsByName(“gender”); console.log(inputs); //查询父节点 var gz = document.getElementById(“gz”); var ul = gz.parentNode; console.log(ul); //查询子节点 console.log(ul.childNodes); console.log(ul.getElementsByTagName(“li”)); //查询节点的兄弟 var li = gz.parentNode.getElementsByTagName(“li”); console.log(li); } function f1() { //创建节点li var li = document.createElement(“li”); li.innerHTML = “Hangzhou”; //追加节点 var ul = document.getElementById(“city”); ul.appendChild(li); } function f2() { //创建节点 var li = document.createELement(“li”); li.innerHTML = “Suzhou”; //插入节点 var ul = document.getElementById(“city”); var gz = document.getElementById(“gz”); ul.insertBefore(li, gz); } function f3() { //获取要删除节点的父亲 var ul = document.getElementById(“city”); //获取要删除的节点 var gz = document.getElementById(“gz”); //根据父亲删除孩子 ul.removeChild(gz); }</script><body> <p> <input type=”radio” name=”gender”/>male <input type=”radio” name=”gender”/>female </p> <p> <input type=”button” value=”add” onclick=”f1();”> <input type=”button” value=”insert” onclick=”f2();”> <input type=”button” value=”delete” onclick=”f3();”> </p> <ul id=”city”> <li>Beijing</li> <li>Shanghai</li> <li id=”gz”>Guangzhou</li> <li>Shenzhen</li> <li>Tianjin</li> </ul></body>
增加:
创建新节点
document.createElement(elementName)
elementName:要创建的元素标签名称
返回新创建的节点
添加新节点
parentNode.appendChild(newNode);
追加:新节点作为父节点的最后一个子节点添加
parentNode.insertBefore(newNode, refNode);
refNode:参考节点,新节点位于此节点之前添加
删除:
node.removeChild(childNode)
删除某个子节点
childNode必须是node的子节点
case:创建省市下拉选
功能实现:当改变省份时,重置市
<script> var cities; window.onload = function() { //模拟加载所有的城市 cities = [ [“Shijiazhuang”, “Baoding”, “Langfang”], [“Jinan”, “Qingdao”, “Weihai”], [“Nanjing”, ”Suzhou”, “Wuxi”] ]; } function chg() { //获取选择的省份(序号) var s1 = document.getElementById(“province”); var index = s1.value; //获取省份对应的城市 var p_cities = cities[index]; //删除旧的城市 var s2 = document.getElementById(“city”); /* //倒序删除,若正序:第一次删除1,原2会变成1,第二次删除2,原3被删除。 //所以不能全部删除 var options = s2.getElementsByTagName(“option”); //逐条删除 for(var i=p_cities.length; i>=1; i--){ s2.removeChild(options[i]); } */ //当做内容 s2.innerHTML = “<option>please choose</option>”; //追加新的城市 if(p_cities) { //“请选择时为空” for(var i=0; i<p_cities.length; i++){ var option = document.createElement(“option”); option.innerHTML = p_cities[i]; s2.appendChild(option); } } }</script><body> Province: <select> <option onchange=”chg();” id=”province”> <option value=”-1”>please choose</option> <option value=”0”>Jiangsu</option> <option value=”1”>Zhejiang</option> <option value=”2”>Heilongjiang</option> </select> City: <select id=”city”> <option>please choose</option> </select></body>
Province:
please choose
Jiangsu
Zhejiang
Heilongjiang
City:
please choose
网页的function功能没法实现,可以把代码复制下来
- 11.JavaScript外部对象-DOM
- javaScript外部对象
- javaScript 外部对象2
- javaScript的外部对象
- JavaScript的外部对象
- JavaScript DOM对象结构图
- javascript,XML DOM,对象
- JavaScript文档对象(DOM)
- JavaScript HTML DOM 对象
- javascript的dom 对象
- javascript的dom 对象
- javascript之Dom对象
- javascript中的dom对象
- javascript DOM对象
- javascript的dom 对象
- javascript中的Dom对象
- JavaScript HTML DOM 对象
- javascript之DOM对象
- 【整理】前端中使用频率比较高的一些知识点。
- C语言求平均值
- UVA11183-Teen Girl Squad
- 区间第k大(版本1)POJ2104(BSOI1722)
- Hall定理学习小记
- 11.JavaScript外部对象-DOM
- 韩顺平老师四门课网上支付+报表技术+ZendFrameWork视频教程+M...
- <学习笔记>计算机网络(一)
- (my)eclipse与mySql中文乱码问题
- octave/matlab的基本用法
- 修改一句话里面的某几个字体颜色
- 蜜罐Cowrie的简单搭建和用法介绍
- Eclipse设置
- 警告:由于aix的操作系统patch导致的Oracle数据库块损坏问题