Javascript自学随笔:DOM

这篇博客详细介绍了JavaScript中的DOM操作,包括获取和操作节点、定位元素的方法,如getElementById、getElementsByTagName等。还探讨了HTML5的新特性,如classList、focus及CSS-IN-JS,并提醒了innerHTML的使用注意事项。同时,讲解了如何存取属性、使用自定义参数data-xxxx,以及获取和修改CSS样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


DOM 是 HTML和XML的API,允许用户增改查删网页上的元素。

Node关系

node.childNodes[x]: 读取子节点
node.item(x):同理
NodeList转化为Array:
let array = Array.prototype.slice.call(node, 0)
node.nextSubling:下一个
node.previousSubling:前一个
node.parentNode:母节点

操作node

node.appendChild(newNode): 增,如果newNode已经存在,则移动newNode。
node.insertBefore(left, right):最后是(left, null), 第一是(newNode, node.firstChild)
node.replaceNode(new, old)
node.removeNode(delNode): 取消reference但不会立刻清除出内存。

定位元素

document.getElementById
document.getElementsByTagName
document.getElementsByName:Name attribute。
document.getElementsByClassName
document.querySelector
document.querySelectorAll: 返回的NodeList是快照,不是动态列表。
怎样获取当前文档所有的元素节点?
方法1: 使用document.getElementsByTagName("");
方法2: 使用document.querySelectorAll("
");
*方法3:traversal/range方法比如,let iter = document.createTreeWalker(root, whatToShow, filter), let node = iter.nextNode(). node.tagName判断类型。 (也支持previousNode()

存取参数

getAtrribute, setAtrribute,removeAttribute
createElement

HTML5

querySelector:…

classList

div.classList.remove("user") div.classList.add("userTwo") div.classList.toggle("user"): 存删缺设 div.classList.contains("user")

focus

element.focus()
document.hasFocus()

HTMLDocument:
document.readyState: loading或者complete

自定义参数

data-xxxx:
读取:dataset.xxxx

InnerHTML(不建议使用)

1.如果一个元素绑定event handler,改写innerHTML不会清理掉event handler。
2.不要用innerHTML实现一些user input的功能,防止用户运行恶意代码段。
InnerHTML:
大段改写增加HTML。只包含子nodes
div.innerHTML = “XXXXXXXXXXXXXXXXXXXXXX”
这里不能执行

CSS-IN-JS

css可用[node].style.[attribute]来获取。
常用方法有getPropertyCSSValue, getPropertyValue, index, setProperty, removeProperty
有时你需要获取node上渲染后作用的CSS,使用document.defaultView.getComputedStyle(node)。只读不写。
有时你需要直接操作css表本身,而不通过节点,你需要let sheet = document.styleSheets[n]. 每个rule通过sheet.cssRules[n]读取。rule.selectorText === "xxx"判断选择器,rule.style.xxxx获取css元素。sheet.insertRule()来添加cssRule。
元素尺寸element dimenstions:
offset dimensions: read only, offsetParent不一定是parentNode,
在这里插入图片描述
client dimension:
在这里插入图片描述
scroll dimension:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值