当前位置: 首页 > news >正文

拥有DOM力量的你究竟可以干什么

如果你希望访问 HTML 页面中的任何元素,那么您总是从访问 document 对象开始!

查找HTML元素

document.getElementById(id)                                通过元素 id 来查找元素
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div id="myDiv">Hello, world!</div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var myDiv = document.getElementById("myDiv");console.log(myDiv);  // 输出 <div id="myDiv">Hello, world!</div>
</script>
</body>
</html>
document.getElementsByTagName(name)          通过标签名来查找元素

这个方法接收一个参数 name,该参数是一个字符串,表示你想要选择的元素的标签名称

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<p>一段话</p>
<p>一段话1</p>
<p>一段话2</p><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var p = document.getElementsByTagName("p");console.log(p);console.log(p[1]);
</script>
</body>
</html>

返回的 NodeList 对象是一个“类数组”,可以像数组一样使用。你可以通过索引访问特定的元素,例如,document.getElementsByTagName("p")[0] 将返回第一个 <p> 元素

需要注意的是,NodeList 是“静态的”,也就是说,它并不会反映后续对文档的修改。如果在后续对文档进行了修改(例如,添加或删除了元素),那么你需要再次调用 getElementsByTagName 来获取最新的元素(查找HTML元素的方法的性质都类似,类比即可!)

document.getElementsByClassName(name)通过类名来查找元素
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<button class="btn">我是按钮</button><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var btn = document.getElementsByClassName("btn");console.log(btn);
</script>
</body>
</html>
document.querySelector(CSS选择器)                                        通过CSS选择器选择一个元素
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<button class="btn">我是按钮</button><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var btn = document.querySelector(".btn");console.log(btn);
</script>
</body>
</html>
document.querySelectorAll(CSS选择器)                                    通过CSS选择器选择多个元素
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<ul class="list"><li>列表项1</li><li>列表项2</li><li>列表项3</li><li>列表项4</li>
</ul><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var list = document.querySelectorAll(".list li");console.log(list);
</script>
</body>
</html>

获取HTML元素的值

元素节点.innerText获取 HTML元素的 inner Text
元素节点.innerHTIML获取 HTML元素的 inner HTML
元素节点.属性获取 HTIML 元素的属性值
元素节点getAttribute(attribute)获取 HTIML 元素的属性值
元素节点style.样式获取 HTML 元素的行内样式值
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<a ID="a" href="https://www.csdn.net/">CSDN</a><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var a = document.getElementById("a");console.log(a.innerText);
</script>
</body>
</html>

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div id="box"><h1>我是Box中的大标题</h1>
</div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var box = document.getElementById("box");console.log(box.innerHTML);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<a ID="a" href="https://www.csdn.net/">CSDN</a><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var a = document.getElementById("a");console.log(a.href);console.log(a.getAttribute("href");console.log(a.getAttribute(""));
<!-- 创建一个超链接,默认为空,设置href属性为https://www.csdn.net/ ,使用JavaScript代码读取href属性-->
</script>
</body>
</html>

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div style="width: 100px;height: 100px;background: red;" id="box"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var box = document.getElementById("box");console.log(box.style.width);
</script>
</body>
</html>

小知识:

如果CSS的样式名中含有-,这种名称在JS中是不合法的比如background-color,需要将这种样式名修改为驼峰命名法,去掉-,然后将 - 后的字母大写,我们通过style属性设置的样式都是行内样式,同样的获取也是行内样式,而行内样式有较高的优先级,所以通过JS修改的样式往往会立即显示,但是如果在样式中写了!important,则此时样式会有最高的优先级,即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效,所以尽量不要为样式添加!important

改变HTML的值

元素节点.innerText = new text content改变元素的 inner Text
元素节点.innerHTML = new html content改变元素的 inner HTML
元素节点.属性 = new value改变 HTML 元素的属性值
元素节点.setAttribute(attributevalue)改变 HTML 元素的属性值
元素节点.style.样式 = new style改变 HTML 元素的行内样式值
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<button id="btn">我是按钮</button><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var btn = document.getElementById("btn");btn.innerText = "我是JavaScript的按钮";console.log(btn);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div id="box"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var box = document.getElementById("box");box.innerHTML = "<h1>我是Box中的大标题</h1>";console.log(box);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<a id="a" href="">打开百度,你就知道!</a><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var a = document.getElementById("a");a.href="https://www.baidu.com";console.log(a);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div style="width: 100px;height: 100px;background: red;" id="box"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var box = document.getElementById("box");box.style.background = "green";console.log(box);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<div style="width: 100px;height: 100px;background: red;" id="box"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var box = document.getElementById("box");box.style.background = "green";console.log(box);
</script>
</body>
</html>

添加HTML元素 

document.createElement(element)创建 HTML 元素节点
document.createAttribute(attribute)创建 HTML 属性节点
document.createTextNode(text)创建 HTML 文本节点
元素节点.removeChild(element)删除 HTML 元素
元素节点.appendChild(element)添加 HTML 元素
元素节点.replaceChild(element)替换 HTML 元素
元素节点.insertBefore(element)在指定的子节点前面插入新的子节点

创建不代表是添加到网页上了!!!

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var a = document.createElement("a");a.href = "https://www.csdn.net";  // 设置链接地址var text = document.createTextNode("CSDN");a.appendChild(text);  // 将链接文本添加到链接元素中document.getElementsByTagName("body")[0].appendChild(a);var ul = document.createElement("ul");var li1 = document.createElement("li");var text1 = document.createTextNode("列表项1");li1.appendChild(text1);ul.appendChild(li1);var li2 = document.createElement("li");var text2 = document.createTextNode("列表项2");li2.appendChild(text2);ul.appendChild(li2);var li3 = document.createElement("li");var text3 = document.createTextNode("列表项3");li3.appendChild(text3);ul.appendChild(li3);var li4 = document.createElement("li");var text4 = document.createTextNode("列表项4");li4.appendChild(text4);ul.appendChild(li4);var li5 = document.createElement("li");var text5 = document.createTextNode("列表项5");li5.appendChild(text5);ul.appendChild(li5);document.getElementsByTagName("body")[0].appendChild(ul);
</script>
</body>
</html>

创建一个ul列表,里边有四个li子元素,删除第一个li,替换最后一个li

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<ul id="ul"><li id="first">列表项1</li><li>列表项2</li><li>列表项3</li><li id="last">列表项4</li>
</ul><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 -->
<script>var ul = document.getElementById("ul");var first = document.getElementById("first");var last = document.getElementById("last");/*删除第一个*/ul.removeChild(first);/*替换最后一个*/var replaceLi = document.createElement("li");replaceLi.innerHTML = "列表4的替换";ul.replaceChild(replaceLi, last);
</script>
</body>
</html>

查找HTML父子元素节点

元素节点.parentNode返回元素的父节点
元素节点.parentElement返回元素的父元素
元素节点.childNodes返回元素的一个子节点的数组(包含空白文本Text节点)
元素节点.children返回元素的一个子元素的集合(不包含空白文本Text节点)
元素节点.firstChild返回元素的第一个子节点(包含空白文本Text节点)
元素节点.firstElementChild返回元素的第一个子元素(不包含空白文本Text节点)
元素节点.lastChild返回元素的最后一个子节点(包含空白文本Text节点)
元素节点.lastElementChild返回元素的最后一个子元素(不包含空白文本Text节点)
元素节点.previousSibling返回某个元素紧接之前节点(包含空白文本Text节点)
元素节点.previousElementSibling返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)
元素节点.nextSibling返回某个元素紧接之后节点(包含空白文本Text节点)
元素节点.nextElementSibling返回指定元素的后一个兄弟元素(相同节点树层中的下一个元素节点)
http://www.lryc.cn/news/209660.html

相关文章:

  • GnuTLS recv error (-110): The TLS connection was non-properly terminated
  • Notepad++安装插件和配置快捷键
  • iOS Autolayout 约束设置【顺序】的重要性!
  • Echarts渲染不报错但是没有内容
  • 数据结构 | 算法的时间复杂度和空间复杂度【详解】
  • 高级篇之ENC编码器多机位帧同步配置详解
  • matlab simulink 四旋翼跟拍无人机仿真
  • jenkins、ant、selenium、testng搭建自动化测试框架
  • 【阅读和学习代码】VoxelNet
  • 【23种设计模式】接口隔离原则
  • 【Python机器学习】零基础掌握PartialDependenceDisplay检验、检查
  • Jmeter的接口自动化测试
  • windows c++获取开机启动项
  • 【C++初阶】类和对象——构造函数析构函数拷贝构造函数
  • Java实现SQL分页
  • 软件测试进阶篇----自动化测试脚本开发
  • rust std
  • SpringMVC(下)
  • 分布式操作系统的必要性及重要性
  • 【Javascript】定时器
  • 基于stm32的ADC读取烟雾报警器的数值
  • 无需更换vue-cli 脚手架 uniapp-搭建项目-H5-低版本安卓IOS兼容问题(白屏)(接口请求异常)
  • 【IO面试题 四】、介绍一下Java的序列化与反序列化
  • M1本地部署Stable Diffusion
  • java中的内存分配
  • Matter.js 插件:matter-wrap(世界是圆的)
  • HCIA --- ACL(访问控制列表)
  • Xcode自定义快捷键
  • jmeter界面压测过程卡死解决思路
  • 听GPT 讲Rust源代码--library/std(6)