JavaScript选择器
时间:2022-07-24
本文章向大家介绍JavaScript选择器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Js选择器
JS选择器常用的有getElementById()
、getElementsByClassName()
、getElementsByName()
、getElementsByTagName()
、querySelector()
、querySelectorAll()
。
getElementById
通过id
来定位,返回对指定id
的第一个对象的引用,返回类型为HTMLDivElement
。
<div id="t1">T1</div>
<script type="text/javascript">
var t1 = document.getElementById("t1");
console.log(t1); // <div id="t1">D1</div>
console.log(Object.prototype.toString.call(t1)); // [object HTMLDivElement]
</script>
getElementsByClassName
通过class
属性来定位,返回文档中指定class
属性值的元素的引用,返回类型为HTMLCollection
。
<div class="t2">D2</div>
<div class="t2">D3</div>
<script type="text/javascript">
var t2List = document.getElementsByClassName("t2");
console.log(t2List); // HTMLCollection(2) [div.t2, div.t2]
// 使用for循环遍历
for(let i=0,n=t2List.length;i<n;++i) console.log(t2List[i]);
// HTMLCollection的prototype中没有forEach方法,遍历需要使用Array的prototype中forEach通过call绑定对象实例并传参
Array.prototype.forEach.call(t2List,v => console.log(v) );
// HTMLCollection的prototype中没有map方法,也需要使用Array的prototype中forEach通过call绑定对象实例并传参
Array.prototype.map.call(t2List,v => console.log(v) );
</script>
getElementsByName
通过name
属性来定位,返回文档中指定name
属性值的元素的引用,返回类型为NodeList
。
<div name="t3">D4</div>
<div name="t3">D5</div>
<script type="text/javascript">
var t3List = document.getElementsByName("t3");
console.log(t3List); // NodeList(2) [div, div]
// 可直接使用forEach进行遍历
t3List.forEach( v => console.log(v) );
// NodeList的prototype中没有map方法,使用map的场景也需要借助Array的prototype中map通过call绑定对象实例并传参
Array.prototype.map.call(t3List,v => console.log(v) );
</script>
getElementsByTagName
通过标签的名字来定位,返回文档中指定标签的元素的引用,返回类型为HTMLCollection
。
<p class="t4">P6</p>
<p class="t4">P7</p>
<script type="text/javascript">
var t4List = document.getElementsByTagName("p");
console.log(t4List); // HTMLCollection(2) [p, p]
Array.prototype.forEach.call(t4List, function(v){console.log(v);});
Array.prototype.map.call(t4List,function(v){console.log(v);} );
</script>
querySelector
通过CSS
选择器来定位,返回文档中匹配指定CSS
选择器的第一个元素的引用,返回类型为HTMLDivElement
。
<div>
<div class="t5">D8</div>
</div>
<script type="text/javascript">
var t5 = document.querySelector("div .t5");
console.log(t5); // <div class="t5">D8</div>
console.log(Object.prototype.toString.call(t5)); // [object HTMLDivElement]
</script>
querySelectorAll
通过CSS
选择器来定位,返回文档中匹配指定CSS
选择器的所有元素的引用,返回类型为NodeList
。
<div>
<div id="t6">D9</div>
<div>D10</div>
<div>D11</div>
</div>
<script type="text/javascript">
var t6List = document.querySelectorAll("#t6 ~ div");
console.log(t6List); // NodeList(2)[div, div]
t6List.forEach(function(v){console.log(v);});
Array.prototype.map.call(t6List,function(v){console.log(v);} );
</script>
知识相关
数组的遍历 https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/Js%E9%81%8D%E5%8E%86%E6%95%B0%E7%BB%84%E6%80%BB%E7%BB%93.md
ES6箭头函数 https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/ES6%E6%96%B0%E7%89%B9%E6%80%A7.md
原型与原型链 https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/%E5%8E%9F%E5%9E%8B%E4%B8%8E%E5%8E%9F%E5%9E%8B%E9%93%BE.md
CSS选择器 https://github.com/WindrunnerMax/EveryDay/blob/master/CSS/CSS%E9%80%89%E6%8B%A9%E5%99%A8.md
代码示例
<!DOCTYPE html>
<html>
<head>
<title>Js选择器</title>
<meta charset="utf-8">
</head>
<body>
<div id="t1">D1</div>
<div class="t2">D2</div>
<div class="t2">D3</div>
<div name="t3">D4</div>
<div name="t3">D5</div>
<p class="t4">P6</p>
<p class="t4">P7</p>
<div>
<div class="t5">D8</div>
</div>
<div>
<div id="t6">D9</div>
<div>D10</div>
<div>D11</div>
</div>
</body>
<script type="text/javascript">
var t1 = document.getElementById("t1");
console.log(t1); // <div id="t1">D1</div>
console.log(Object.prototype.toString.call(t1)); // [object HTMLDivElement]
console.log("");
var t2List = document.getElementsByClassName("t2");
console.log(t2List); // HTMLCollection(2) [div.t2, div.t2]
// 使用for循环遍历
for(let i=0,n=t2List.length;i<n;++i) console.log(t2List[i]);
// HTMLCollection的prototype中没有forEach方法,遍历需要使用Array的prototype中forEach通过call绑定对象实例并传参
Array.prototype.forEach.call(t2List,v => console.log(v) );
// HTMLCollection的prototype中没有map方法,也需要使用Array的prototype中forEach通过call绑定对象实例并传参
Array.prototype.map.call(t2List,v => console.log(v) );
console.log("");
var t3List = document.getElementsByName("t3");
console.log(t3List); // NodeList(2) [div, div]
// 可直接使用forEach进行遍历
t3List.forEach( v => console.log(v) );
// NodeList的prototype中没有map方法,使用map的场景也需要借助Array的prototype中map通过call绑定对象实例并传参
Array.prototype.map.call(t3List,v => console.log(v) );
console.log("");
var t4List = document.getElementsByTagName("p");
console.log(t4List); // HTMLCollection(2) [p, p]
Array.prototype.forEach.call(t4List, function(v){console.log(v);});
Array.prototype.map.call(t4List,function(v){console.log(v);} );
console.log("");
var t5 = document.querySelector("div > .t5");
console.log(t5); // <div class="t5">D8</div>
console.log(Object.prototype.toString.call(t5)); // [object HTMLDivElement]
console.log("");
var t6List = document.querySelectorAll("#t6 ~ div");
console.log(t6List); // NodeList(2) [div, div]
t6List.forEach(function(v){console.log(v);});
Array.prototype.map.call(t6List,function(v){console.log(v);} );
console.log("");
</script>
</html>
- JavaScript中的数据类型
- Logistic回归算法及Python实现
- <script>元素在XHTML中的用法
- 有趣的算法(四)——一致性Hash算法模拟redis集群
- ASP.NET5 中静态文件的各种使用方式服务端的静态文件开启目录浏览呈现默认文件使用UseFileServer方法文件类型基于IIS的考虑最佳实践
- 使用ASP.NET Identity以手机短信实现双重验证创建一个ASP.NET 5项目运行应用程序使用SMS短信进行双重验证开启双重验证使用双重验证登陆应用程序禁用账户来防止暴力破解
- ASP.NET 5 之 错误诊断和它的中间件们配置错误处理页面在Development阶段使用错误页面运行时信息页面欢迎页面
- 有趣的算法(五) ——Dijkstra双栈四则运算
- CSS深入理解学习笔记之float
- 轻松初探 Python 篇(五)—dict 和 set 知识汇总
- 全面解析C#中的异步编程为什么要异步过去糟糕的体验一个新的方式Tasks基于任务的异步编程模型Async和await时间处理程序和无返回值的异步方法结束语
- CSS深入理解学习笔记之absolute
- 5个经典的JavaScript面试题
- 轻松初探 Python 篇(四)—list tuple range 知识汇总
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot源码学习(六)
- SpringBoot源码学习(七)
- LeetCode52|有序数组中的单一元素
- LeetCode53|搜索二维矩阵II
- LeetCode54|二叉树的层次遍历
- LeetCode55|二叉树的层次遍历II
- LeetCode56|二叉树的层平均值
- LeetCode57|二叉树的锯齿形层次遍历
- LeetCode58|N叉树的层序遍历
- 技术创作101训练营-CRC校验没那么难
- 栈与队列:有没有想过计算机是如何处理表达式的?
- 栈与队列:滑动窗口里求最大值引出一个重要数据结构
- 栈与队列:求前 K 个高频元素和队列有啥关系?
- 手写一个抖音视频去水印工具,千万别刚一个程序员
- ApplicationListener接口实践