在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
选择器是 后来DOM扩展出了 一、querySelector查询单个元素
语法格式如下: Document实例.querySelector(选择器字符串); Element实例.querySelector(选择器字符串); 1. Document实例调用
简单示例如下: // 获取body元素 let body = document.querySelector("body"); console.log(body) // 获取id为container的元素,只会获取第一个 let container = document.querySelector("#container"); console.log(container) // 获取class中包含btn的元素,只会获取第一个 let btn = document.querySelector(".btn"); console.log(btn); // 获取container直接子类class中包含btn的元素,只会获取第一个 let containerBtn = document.querySelector("#container>.btn"); console.log(containerBtn); 2. Element实例调用
简单示例: // 获取ID为container的元素 let container = document.querySelector("#container"); // 需要检测元素对象是否存在,存在才有 querySelector 方法 if (container) { // 只查找 container 内class包含 btn 的元素。 let containerBtn = container.querySelector(".btn"); console.log(containerBtn); } 理论上来讲,因为Css可以通过选择器获取页面任意的元素,所以 例如上例就可以直接写成如下方式: let containerBtn = document.querySelector("#container .btn"); 并且因为少了一个if判断,代码就更加简洁。当然在有些业务场景下, 二、querySelectorAll查询所有元素
简单示例: // 假设页面有两个div类名包含 article // 获取所有类包含 article 的元素 let articleList = document.querySelectorAll(".article"); console.log(articleList); console.log(articleList.length); // 控制台输出: // NodeList(2) [div.article, div.article] // 2
// for of 遍历 for (let item of articleList) { console.log(item); } // for 遍历 for (let i = 0; i < articleList.length; i++) { console.log(articleList[i]); console.log(articleList.item(i)); } // forEach 遍历 articleList.forEach((item, index) => { console.log(item, index); }); 1、for in遍历的问题如果使用f 2、快照而非实时的问题使用 请看下面这个例子: // 使用 querySelectorAll 获取,articleList 是静态的,非实时的 let articleList = document.querySelectorAll(".article"); console.log(articleList); console.log(articleList.length); // 2 setTimeout(() => { // 增加一个元素 let div = document.createElement("div"); div.className = "article"; document.body.appendChild(div); console.log(articleList); // 依旧为2 console.log(articleList.length); }, 0); 最后设置了一个定时器,往页面塞了一个 如果是用 请看如下例子: // 使用 getElementsByClassName 获取,articleList是实时的 let articleList = document.getElementsByClassName("article"); console.log(articleList); console.log(articleList.length); setTimeout(() => { // 增加一个元素 let div = document.createElement("div"); div.className = "article"; document.body.appendChild(div); console.log(articleList); // 这里为3 console.log(articleList.length); }, 0); 在控制台查看打印结果: HTMLCollection动态效果: 使用 三、小结
到此这篇关于 |
请发表评论