DOM API 获取元素的 N 种方法

什么是DOM?

DOM:Document Object Model

DOM翻译过来是文档对象模型,是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将web页面和脚本或程序语言连接起来。

说白了DOM就是浏览器为JavaScript提供的一系列接口,通过这些接口我们可以操作web页面。

DOM节点

DOM的最小组成单位叫做节点(node)。文档的树形结构(DOM树),就是由各种不同类型的节点组成。节点有以下7种类型

Document:整个文档树的顶层节点(root node)

DocumentType: doctype标签

Element:网页的各种HTML标签

Attribute:网页元素的属性

Text:标签之间包含的文本内容

Comment:注释

DocumentFragment:文档片段

节点间的关系

除了根节点,它的下级节点与周围节点存在三种关系

父节点关系:parentNode

子节点关系:childNodes

firstChild:第一个子节点

lastChild:最后一个子节点

同级节点关系:sibling

nextSibling:紧邻在后的那个同级节点

previousSibling:紧邻在前的那个同级节点

DOM API 获取元素的 N 种方法

(1) 通过顶层document节点获取:

    1. 通过ID获取元素

doument.getElementById(“elementId”)

返回拥有指定id的第一个元素,id为大小写敏感的字符串,如果不存在则返回null。如果页面上含有多个相同id的节点,那么只返回第一个节点。

   2. 通过节点名获取元素

document.getElementsByName(“elementsName”)

name 为字符串(String),该方法是通过节点的name获取节点,返回的有同样名称的节点数组。通过要获取节点的某个属性来循环判断是否为需要的节点

   3. 通过节点标签名称获取元素

document.getElementByTagName(“tagName”)

该方法是通过节点的Tag获取节点,该方法与document.getElementsByName()相似,同样返回一个数组

   4. 通过元素类名获取元素

document.getElementsClassName(“classname”)

同样返回的是一个数组,当调用发生在document对象上时, 整个DOM都会被搜索, 包含根节点

 5. querySelector 和querySelectorall

querySelector:

语法:element = document.querySelector(selectors),接受一个css选择器作为参数,返回匹配该选择器的第一个节点,如果没有匹配的节点返回null。selectors是一个字符串,包含一个或者多个css选择器,多个以逗号分隔

querySelectorAll:

该方法返回所有满足条件的元素,结果是个nodeList集合。

(2) 通过父节点获取:

  1. parentObj.firstChild:如果节点为已知节点(parentObj)的第一个子节点就可以使用这个方法。这个属性是可以递归使用的,也就是支持parentObj.firstChild.firstChild.firstChild...的形式,如此就可以获得更深层次的节点。

  2. parentObj.lastChild:很显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也可以递归使用。

  3. parentObj.childNodes:获取已知节点的子节点数组,然后可以通过循环或者索引找到需要的节点。

  4. parentObj.children:获取已知节点的直接子节点数组。

  5. parentObj.getElementsByTagName(tagName):使用方法不再赘述,它返回已知节点的所有子节点中类型为指定值的子节点数组。例如:parentObj.getElementsByTagName('A')返回已知的子节点中的所有超链接。

(3) 通过临近节点获取:

1. neighbourNode.previousSibling:获取已知节点(neighbourNode)的前一个节点,这个属性和前面的firstChild、lastChild一样都似乎可以递归使用的。

2. neighbourNode.nextSibling:获取已知节点(neighbourNode)的下一个节点,同样支持递归。

(4) 通过子节点获取:

   childNode.parentNode:获取已知节点的父节点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容