DOM-3 【utils/待讲评】节点属性、方法、封装方法、DOM结构

讲评

节点属性

nodeType
元素节点 1 大写
属性节点 2
文本节点 3 #text
注释节点 8 #comment
document 9
DocumentFragment 11

  • nodeName是只读属性
  • 元素节点的nodeName是大写的
  • 其余的是#小写的
  • 元素节点没有nodeValue属性,null,是可写的
  • 其余有(属性、注释、文本…)
  • getAttributeNode(获取属性节点)
  • 属性节点有nodeValue、value属性
  • nodeType,只读

封装方法遍历子元素

  1. 常规
    加粗样式

  2. 类数组
    在这里插入图片描述
    在这里插入图片描述

获取属性

  • nodeValue是可写的
<body><div class="temp" id="div_id"></div><script>var div = document.getElementsByTagName('div')[0]console.log(div.getAttributeNode('id').nodeValue) // 以下方法都可以console.log(div.getAttributeNode('id').value)console.log(div.getAttributeNode('id')) // 了解console.log(div.attributes) // 了解console.log(div.getAttribute('id') )</script>

在这里插入图片描述

hasChildNodes

  • 有换行就有文本节点
    在这里插入图片描述
    在这里插入图片描述

Document构造函数

在这里插入图片描述
Document.prototype上有响应获取元素的方法
在这里插入图片描述

  • 但是document并不是直接继承于Document.prototype
  • document << HTMLDocument << Document
document.__proto__ = HTMLDocument.prototype
HTMLDocument.prototype.__proto__ = Document.prototype

在这里插入图片描述

DOM结构

在这里插入图片描述

1.Document

  • dom是操作html和xml的,不能操作css
  • Document还有一个分支是XMLDocument
    在这里插入图片描述
    在这里插入图片描述

2. CharacterData

  • Text.prototype.__proto__ === CharacterData.prototype // true
  • Comment.prototype.__proto__ === CharacterData.prototype // true

3. Element

  • 有HTMLElement和XMLElement分支
    在这里插入图片描述
    在这里插入图片描述

4. Node

在这里插入图片描述

var div = document.getElementsByTagName('div')[0]
console.log(Object.prototype.toString.call(div)) // [object HTMLDivElement]

DOM操作深入

Document.prototypeElement.prototype
独享getELementById
独享getElementsByName
共享getElementsByTagName、getElementsByClassName、querySelector、querySelectorAll

通配符* - getElementsByTagName

在这里插入图片描述

获取元素

  1. 用getElementsByTagName
  2. 更好的方法是利用HTMLDocument的原型上的body、head属性(直接用document.body通过原型链来访问)
    在这里插入图片描述
  3. 特:document.title获取的是title标签内的文本,而不是获取title元素,若要选择标签,则使用getElementsByTagName
  4. Document.prototype的documentElement可以访问到html
    在这里插入图片描述
    在这里插入图片描述
  • 用document实例访问,不能直接用**原型访问,否则报错
原型属性
HTMLDocument.prototypebody、head
Document.prototypedocumentElement(html)

练习

  1. 在原型上编程 遍历任意一个父元素 找到他的子元素节点 有数字参数 返回某一个对应子元素 没有则返回子元素集合
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><main><div><ul><li>1</li><li>2</li><li>3</li></ul><span></span></div><!-- 注释 --><span></span><a href=""></a><p></p></main><script>Element.prototype.myFindChildren = function (pTagName) {var pNode = document.getElementsByTagName(pTagName)[0]var idx = arguments[1]if (idx) {return findChildren(pNode)[idx]} else {return findChildren(pNode)}}function findChildren(pNode) {var arr = pNode.childNodes,arrLen = pNode.childNodes.length,children = []for (var i = 0; i < arrLen; i++) {var item = arr[i]if (item.nodeType == 1) {children.push(item)}}return children}console.log(document.body.myFindChildren('main'))console.log(document.body.myFindChildren('div', 1))</script>
</body></html>
  1. 在原型上编程 找出一个元素的第n层父级元素
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><main><div><ul><li>1</li><li>2</li><li>3</li></ul><span></span></div><!-- 注释 --><span></span><a href=""></a><p></p></main><script>Element.prototype.myFindPNode = function (pTagName) {var cNode = document.getElementsByTagName(pTagName)[0]var num = arguments[1] || 1for (var i = num; i > 0; i--) {cNode = cNode.parentNode}return cNode}console.log(document.body.myFindPNode('li'))console.log(document.body.myFindPNode('li', 4))</script>
</body></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript --- DOM0级、DOM2级、跨浏览器 的事件处理程序

DOM0级事件处理程序: // 使用DOM0级方法指定的事件处理程序被认为是元素的方法 // 这个时候的事件处理程序是在元素的作用域中运行: <div id "myBtn" >DOM0</div> <script>var btn document.getElementById("myBtn");btn.onclick fun…

collections deque队列及其他队列

from collections import dequedq deque(range(10),maxlen10) dq.rotate(3)#队列旋转操作接受一个参数N&#xff0c;让N>0时&#xff0c;队列的最右边N个元素会被移动到队列最左边&#xff0c;反之会移到队列最右边 dq.appendleft(-1)#头部添加dq.extend([11,22,33])#尾部添…

002 模板实参推断、重载与模板

模板实参推断 一、模板函数显示实参 情况1&#xff1a; template <typename T1, typename T2, typename T3> T1 sum(T2 a, T3 b) {return a b; } 分析&#xff1a;调用的时候就需要指定T1的类型&#xff0c;如&#xff1a;sum<float>(1, 2); 于是sum函数的返回类型…

DOM-4 【utils/待讲评】节点创建删除、元素属性设置获取、节点属性

讲评 节点创建 Document.prototype ← document.createElement(div)document.createTextNode(xxx) // 创建文本节点document.createComment(xxx) // 创建注释节点 增加/剪切子节点 Node.prototype ← node.appendChild(node)总是在父元素的最后增加&#xff08;类似push&am…

javascript --- 事件对象和事件类型

// 无论程序使用"DOM0级"规范还是"DOM2级"规范,都会在局部产生一个event对象, // 将其打印出来研究: <div id"divBtn"><button id"rawBtn" >Click Me!</button></div> <script>const divBtn document…

关于APP更新,两包共存的解决方案

大多数是由于包名不一致导致的&#xff0c;一定要注意包名一致、不然手机会认为是两个app&#xff0c;导致两个包共存 查看包名的方法 1、hbuilder打包时会有提示 2、手机打开设置->应用->正在运行->对应app即可查看 转载于:https://www.cnblogs.com/zz-0128/p/827969…

DOM-5【兼容】滚动距离与高度、兼容模式、可视尺寸

查看滚动条的距离 方法版本window.pageXOffset / pageYOffsetIE9/IE8及以下不支持(常规)document.body.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)document.documentElement.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)wind…

python中with及closing

推荐使用 "with"语句 以管理文件:with open("hello.txt") as hello_file: for line in hello_file: print line对于不支持使用"with"语句的类似文件的对象,使用 contextlib.closing():import contextlibwith contextlib.closing(urlli…

http --- Web页面请求的历程(如何根据URL寻找到需要的资源)

HTTP概况: // 超文本传输协议(HyperText Transfer Protocol,HTTP):是Web的应用层协议,它是Web的核心. // 客户端和服务器运行在不同的端系统中,通过交换HTTP报文进行会话 // HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式 // HTTP定义了Web客户向Web服务器请求…

DOM-6 【兼容】读写样式属性、操作伪元素、运动元素初探

规范 <style type"text/css"></style><script type"text/javascript"></script>读写样式属性 .style是访问不到css样式表的&#xff0c;只能访问到行内/内联的属性&#xff0c;当未设置行内属性时&#xff0c;结果为空字符串 设…

RGBD论文阅读笔记

Single-Image Depth Perception in the Wild 简要记载一下对于利用RGB图像depth图像得到segmentation的论文。 论文名称&#xff1a;Cascaded Feature Network for Semantic Segmentation of RGB-D Images 论文出处 ICCV 2017 Lin 模型结构 数据集 NYUDv2 SUN-RGBD 性能分析 总…

vue组件调用(全局调用和局部调用)

当用vue-cli创建一个项目后, 创建项目的方法: https://www.cnblogs.com/fps2tao/p/9376847.html 编写了组件怎么,在其他组件中调用了? 组件listBox: 路径 src/components/listBox.vue <template><div class"listBox">listBox222</div> </templ…

http --- 路由器缓存与常见的状态码

路由器的缓存: // 当下路由器其主要系统性能指吞吐率、利用率、丢包率、延迟、缓存大小和实现复杂性等. // 当链路上发生拥塞时能够对新进入的数据包进行缓存 // 从而降低丢包率、维持高的链路利用率 // 用于存放路由表的内存,速度快,价格也高状态码: // 为客户端提供了一种理…

DOM-7 【兼容】事件处理函数、冒泡捕获、阻止冒泡默认事件

事件处理函数 绑定事件 绑定事件的处理函数&#xff08;事件本身是存在的&#xff0c;绑定的是相应的反馈&#xff09;事件 事件的反馈 前端交互 &#xff08;前端核心&#xff09; 绑定事件的方式 1. 句柄绑定 默认&#xff08;只能&#xff09;是事件冒泡这种事件流为…

javascript --- XHR(XMLHttpRequet)对象

XHR: // XHR(XMLHttpRequest):为向服务器发送请求和解析服务器响应提供了流畅的接口 // 能够以异步方式从服务器取得更多信息,意味着用户点击后,可以不必刷新页面也能取得新数据 // 换句话说,可以使用XHR对象获取新数据,然后再通过DOM将新数据插入到页面中.XMLHttpRequest对象…

DOM-8 【兼容】冒泡捕获流、事件与事件源对象、事件委托

事件流 1. 含义 描述从页面中接收事件的顺序 2. 分类 IE提出的 事件冒泡流 Event BubblingNetscape提出的 事件捕获流 Event Capturing 3. 阶段 事件捕获阶段 处于目标阶段 事件冒泡阶段 事件捕获先于事件冒泡执行 dom dom0&#xff1a;定义句柄方式&#xff0c;兼…

IIS6.0,Apache低版本,PHP CGI 解析漏洞

IIS6.0解析漏洞 在IIS6.0下存在这样的文件“名字.asp;名字.jpg” 代表了jpg文件可以以asp脚本类型的文件执行。 根据这个解析漏洞我们可以上传这种名字类型的图片&#xff0c;比如 1.asp;xxx.jpg 他会忽略;后边的内容&#xff0c;所以文件相当于1.asp asp一句话木马 <%eval …

UVA 3485 Bridge

题目大意 你的任务是修建一座大桥。桥上等距地摆放着若干个塔&#xff0c;塔高为H&#xff0c;宽度忽略不计。相邻两座塔之间的距离不能超过D。塔之间的绳索形成全等的对称抛物线。桥长度为B&#xff0c;绳索总长为L&#xff0c;如下图所示求建最少的塔时绳索的最下端离地的高度…

javascript --- XMLHttp2级、CORS(跨域资源共享)

FormData: // 为序列化表单以及创建与表单格式相同的数据提供了便利 var data new FromData(); data.append("name", "Nicholas");// 使用FormData标准化数据后,发送到服务器 var xhr createXHR(); xhr.onreadystatechange function () {if ( xhr.read…

ES5-拓展 this指向的总结

每个函数在执行时都有自己的this指向 1. 默认绑定规则&#xff1a; 全局中&#xff0c;this指向window this window函数的独立调用&#xff0c;this默认指向window &#xff08;不要把独立调用理解成window调用&#xff09; // 函数在全局中调用&#xff0c;也就是被window调…