HTML 的内容在 DOM TREE 上到底怎麽呈现? 今天就来讲讲树上的节点有哪些,及要怎麽取得这些节点!
整份 HTML 文件中的内容会转成节点 node,除了 tag 会转成节点外,空白及注解也各是一种类的节点,可以透过属性 nodeType
查询节点的种类,
主要节点分类如下:
节点 | 对应数值 | 说明 |
---|---|---|
Node.ELEMENT_NODE | 1 | 表示元素的 element 节点(有使用<>包裹的标签) |
Node.COMMENT_NODE | 8 | 注解 |
Node.TEXT_NODE | 3 | 文字字元,包括空白及换行字元 |
Node.DOCUMENT_NODE | 9 | 文件 Document 节点 |
Node.DOCUMENT_TYPE_NODE | 10 | 表示文件类型的 DocumentType 节点,例如 HTML5 的 。 |
Node.PROCESSING_INSTRUCTION_NODE | 7 | XML document such as |
Node.DOCUMENT_FRAGMENT_NODE | 11 | A DocumentFragment node |
光看表格不太理解可以搭配以下图示,将一段程序码转化为节点呈现
parentNode
:取得父节点
firstChild
:第一个子节点
lastChild
:最後一个子节点
previousSibling
:前一个兄弟节点
nextSibling
:下一个兄弟节点
childNodes
:所有子节点
// body 标签的父节点为 html tag
document.body.parentNode // <html>...</html>
document.body.parentNode.nodeType === Node.ELEMENT_NODE // htmltag 为 ELEMENT_NODE
// body 标签的上一个兄弟节点为 head
// 由於中间有空白字元也算一个节点,因此使用两次的 previousSibling
document.body.previousSibling.previousSibling // <head>...</head>
// body 标签的第一个子节点为空白字元
// comment node 为第一个空白字元的下一个兄弟节点
document.body.firstChild.nextSibling // <!-- Page Body -->
选取单一个物件
document.getElementById
querySelector
选取多个物件
document.getElementsByTagName
document.getElementsByClassName
querySelectorAll
// getElementById
let paragraph = document.getElementById('p')
paragraph.textContent = '完赛倒数9天'
// getElementsByTagName
// 回传 HTMLCollection
let divCollection = document.getElementsByTagName('div')
divCollection[0].textContent // 第一个div
// document.getElementsByClassName
// 回传 HTMLCollection
let divCollection2 = document.getElementsByClassName('content')
divCollection2[1].textContent // 第二个div
// document.querySelector
// querySelector 返回第一个符合的元素
let firstDiv = document.querySelector('div')
firstDiv.textContent // 第一个div
// document.querySelector
// nodeList
let divList = document.querySelectorAll('div')
divList[0] // 第一个div
NodeList:节点的集合,可以包含元素和其他节点,如:comment node 、 text node 等。
HTMLCollection:元素集合,只有 Element node。
相同 | 不同 |
---|---|
都是类阵列物件 , 都有length属性 都有元素的getter,叫做item | NodeList的元素是Node, HTMLCollection的元素是Element。 |
本来今天想透过 codepen 的实作来带入取元素的过程,结果今天codepen 居然 挂 掉 惹 !
为什麽要这样对我~~~ ༼ ༎ຶ ෴ ༎ຶ༽
桑心崩溃忧伤难过之余,顺便来学习一下 status code 的知识吧👍👍👍(振作好快,拍拍)
从 codepen 挂掉的页面显示为,Error 502 Bad Gateway
,这是什麽意思呢?
网页上的这三个数字,其实正确名称为 HTTP Status Code,指 网页服务器超文字传输协定 回应状态的 3 位数字代码,简单一点说就是,登入网页时,浏览器会向 server 发讯息请求资源,HTTP Status Code 就是 server 的反馈消息,而这些消息的号码被分为五类,根据三位数字的第 1 码可以判定是属於哪一类。
RFC 2616 所定义的 HTTP/1.1 中,五类状态码分别为:
- 1xx Informationa - 参考资讯
- 2xx Successful - 成功
- 3xx Redirection - 重新导向
- 4xx Client Error - 用户端错误
- 5xx Server Error - 服务器错误
而这次 codepen 的 502 error code 就是属於服务器错误的 5 开头,继续看看第五类到底是什麽状态
代表错误发生,且这错误发生的原因跟「服务器」有关。服务器因为发生错误或例外状况 (Exception) 而无法完成要求 (Request) 时,就会回应 5xx 的错误。
500
Internal Server Error - 内部服务器错误。
501
Not Implemented – 标头值指定未实作的设定。
502
Bad Gateway - Web 服务器在作为闸道器或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的回应。
503
Service Unavailable - 服务无法使用。 这是 IIS 6.0 专用的错误码。
504
Gateway Timeout - 闸道逾时。
505
HTTP Version Not Supported - 不支援的 HTTP 版本。
原来如此,长知识了呢!
但重点是, codepen 是什麽时候才会修复好呢 (ಥ_ಥ)
008天重新认识 JavaScript
JavaScript 技术手册
What's the Difference between DOM Node and Element?
HTML DOM 方法
MDN - 502
wiki HTTP 状态码
今天我们来还债 XDD,还之前跳过的很多解释,还有如何更加灵活的调整神经网路 那就让我们一步一步来...
我今天要来记录探索Dev C++的过程 还有C++的基本架构 我所使用的开发环境是Dev C++ 上...
在Windows中,默认情况下看不到具有隐藏的系统属性档案。即使在「资料夹选项」中启用了「显示档案和...
今天我们也要来解APCS的题目,今天是105年10月29的实作题第三题,那我们就开始吧! 题目 解答...
昨天已经用PostgreSQL做了范例,今天要轮到PHP当主角了,从DockerHub下载下来最原始...