JavaScript中获取选择器的方式举例详解

 更新时间:2025年08月09日 11:25:20   作者:517  
在JavaScript中选择器是一种强大的工具,用于从HTML文档中选择和操作元素,通过选择器,可以轻松地找到特定的元素,并对其进行各种操作,这篇文章主要介绍了JavaScript中获取选择器的相关资料,需要的朋友可以参考下

vscode 默认浏览器:Live  Server › Settings

重点

querySelector 通过 CSS 选择器提供了一种简洁、灵活的方式操作 DOM,是替代传统 getElementByIdgetElementsByClassName 的现代方法。结合 querySelectorAll 可以覆盖绝大多数 DOM 查询需求。

querySelectorAll

作用

返回文档中所有匹配指定 CSS 选择器的元素集合(静态的 NodeList)。

语法

const elements = document.querySelectorAll(selector);

特点

  • 支持所有 CSS 选择器语法(包括复杂选择器)。

  • 返回的是静态NodeList(不会随 DOM 变化自动更新)。

  • 需要遍历操作元素(例如 forEach)。

示例

// 获取所有类名为 item 的元素
const items = document.querySelectorAll('.item');
​
// 获取所有 input 类型为 checkbox 的元素
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
​
// 遍历操作
items.forEach(item => {
  item.style.backgroundColor = 'yellow';
});

getElementById

作用

通过 ID 获取单个元素(ID 在文档中唯一)。

语法

const element = document.getElementById(id);

特点

  • 直接通过 ID 查找,性能最优。

  • 返回单个元素(不存在返回 null)。

  • 不支持组合选择器,仅接受纯 ID 字符串。

示例

// 获取 ID 为 header 的元素
const header = document.getElementById('header');
​
// 修改内容
header.textContent = 'New Header';

getElementsByClassName

作用

通过 类名 获取元素的动态集合HTMLCollection)。

语法

const elements = document.getElementsByClassName(className);

特点

  • 返回的是动态HTMLCollection(DOM 变化时会自动更新)。

  • 可同时传入多个类名(空格分隔)。

  • 需要转换为数组才能使用 forEach 等方法。

示例

// 获取所有包含 active 类的元素
const activeItems = document.getElementsByClassName('active');
​
// 获取同时包含 btn 和 primary 类的元素
const buttons = document.getElementsByClassName('btn primary');
​
// 转换为数组操作
Array.from(buttons).forEach(btn => {
  btn.disabled = true;
});

onlick与click的用法

1. onclick 属性

定义

  • HTML 内联事件onclick 是 HTML 元素的属性,用于直接绑定点击事件的 JavaScript 代码。

  • 直接执行代码或调用函数:可以内联编写 JavaScript 逻辑,或调用已定义的函数。

用法示例

<!-- 内联直接编写逻辑 -->
<button onclick="alert('按钮被点击了!')">点击我</button>
​
<!-- 调用外部函数 -->
<button onclick="handleClick()">点击我</button>
​
<script>
function handleClick() {
  console.log("按钮被点击");
}
</script>

特点

  • 简单直接:适合快速实现简单逻辑。

  • 局限性

    • 只能绑定一个事件处理函数(重复赋值会覆盖)。

    • HTML 和 JavaScript 代码耦合,不利于维护。

    • 无法控制事件传播(冒泡或捕获阶段)。

2. click 事件(JavaScript 的 addEventListener)

定义

  • 通过 JavaScript 绑定事件:使用 addEventListener('click', callback) 动态绑定点击事件。

  • 灵活且符合标准:是推荐的事件绑定方式,支持更复杂的场景。

用法示例

<button id="myButton">点击我</button>
​
<script>
const button = document.getElementById("myButton");
​
// 绑定事件
button.addEventListener("click", function() {
  console.log("按钮被点击(方式1)");
});
​
// 绑定多个事件(不会覆盖)
button.addEventListener("click", function() {
  console.log("按钮被点击(方式2)");
});
​
// 使用箭头函数
button.addEventListener("click", () => {
  console.log("箭头函数处理点击");
});
</script>

特点

  • 支持多个事件监听器:可绑定多个函数,按顺序执行。

  • 控制事件传播:通过第三个参数 useCapture 指定事件在捕获阶段(true)或冒泡阶段(false,默认)触发。

  • 解绑事件灵活:通过 removeEventListener 移除特定事件。

3. jQuery 的 .click() 方法

定义

  • jQuery 的简化语法.click() 是 jQuery 提供的快捷方法,底层基于 addEventListener

  • 兼容性和简化代码:主要用于旧项目或简化事件绑定。

用法示例

<button id="jqButton">点击我</button>
​
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$("#jqButton").click(function() {
  console.log("jQuery 方式点击");
});
​
// 等效于 addEventListener
$("#jqButton").on("click", function() {
  console.log("另一种 jQuery 绑定方式");
});
</script>

特点

  • 链式调用:支持 jQuery 的链式语法(如 .click().css())。

  • 隐式遍历:自动为匹配的所有元素绑定事件(如多个同类元素)。

  • 兼容性:处理了浏览器兼容性问题(如 IE 旧版本)。

(1)button 变量未定义

  • 代码中直接使用了 button.style.color = 'red',但 button 变量未被定义。

  • 如果 button 是全局变量(如通过 const button = document.querySelector('button') 定义),则可能仅对第一个按钮生效,且不符合 jQuery 操作逻辑。

  • 如果 button 未定义,代码会直接报错 ReferenceError: button is not defined

(2)this 指向错误

  • 使用箭头函数 () => { ... } 时,this 不会指向触发事件的 DOM 元素,而是继承外层作用域的 this(通常是 windowundefined)。

  • 在 jQuery 事件处理函数中,必须通过 this 或 event.target 获取当前元素,但箭头函数破坏了这一机制。

(3)混合原生 DOM 和 jQuery 操作

  • button.style.color 是原生 DOM 操作,而 $('button').on(...) 是 jQuery 方法,混用会导致代码风格不一致且易出错。

  • 推荐统一使用 jQuery 方法(如 .css())操作元素。

(4)事件绑定对象语法问题

$('button').on({ "click": handler }) 语法虽然合法,但通常用于绑定多个事件(如同时绑定 clickmouseover)。对于单一事件,更推荐直接使用 .on('click', handler)

(1)避免混合操作

统一使用 jQuery

$(this).css('color', 'red'); // 推荐

统一使用原生 DOM

const button = document.querySelector('button');
button.addEventListener('click', function() {
  this.style.color = 'red';
});

(2)处理多个按钮

  • 如果页面上有多个 <button> 元素,$('button').on(...) 会为所有按钮绑定事件。

  • 通过 $(this)event.target 可确保仅修改当前点击的按钮样式。

(5). 最终建议

  • 优先使用方案 1(普通函数 + this),保持 jQuery 的简洁性和一致性。

  • 如果必须用箭头函数,选择方案 2 并显式使用 event.target

修正后的代码示例:

// 最佳实践:普通函数 + jQuery 方法
$('button').on('click', function() {
  $(this).css('color', 'red');
});

总结 

到此这篇关于JavaScript中获取选择器的文章就介绍到这了,更多相关JS获取选择器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript的查询机制LHS和RHS解析

    JavaScript的查询机制LHS和RHS解析

    这篇文章主要介绍了JavaScript的查询机制LHS和RHS解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • JavaScript 查找文章中出现频率最高的单词的多种方法

    JavaScript 查找文章中出现频率最高的单词的多种方法

    本文主要介绍了JavaScript 查找文章中出现频率最高的单词的多种方法,包括基础统计、停用词过滤、性能优化(Map/Reduce)、多语言支持及词干提取,感兴趣的可以了解一下
    2025-06-06
  • JS生成随机打乱数组的方法示例

    JS生成随机打乱数组的方法示例

    这篇文章主要介绍了JS生成随机打乱数组的方法,涉及javascript数组随机排序的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • javascript用函数实现对象的方法

    javascript用函数实现对象的方法

    这篇文章主要介绍了javascript用函数实现对象的方法,涉及javascript函数使用技巧,需要的朋友可以参考下
    2015-05-05
  • JavaScript手机振动API

    JavaScript手机振动API

    现代浏览器里提供的新的API越来越倾向于移动手机应用,这篇文章主要为大家详细介绍了JavaScript手机振动API的相关资料,需要的朋友可以参考下
    2016-06-06
  • 原生js实现无限循环轮播图效果

    原生js实现无限循环轮播图效果

    本文主要介绍了原生js实现无限循环轮播图效果的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 根据经纬度计算地球上两点之间的距离js实现代码

    根据经纬度计算地球上两点之间的距离js实现代码

    最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下,根据地球是一个光滑的球面以及并不是一个真正的圆球体,而是椭球延伸出两种方法,感兴趣的你可以参考下
    2013-03-03
  • javascript 子窗体父窗体相互传值方法

    javascript 子窗体父窗体相互传值方法

    javascript 子窗体父窗体相互传值方法,一般都是用window.open函数,下面脚本之家给出具体的代码。
    2010-05-05
  • js实现公告自动滚动

    js实现公告自动滚动

    这篇文章主要为大家详细介绍了js实现公告自动滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 一个页面放2段图片滚动代码出现冲突的问题如何解决

    一个页面放2段图片滚动代码出现冲突的问题如何解决

    这是一段调用图片流动的代码?为什么我在首页同时复制出二段代码后图片不能流动显示了?遇此问题很是疑惑,于是搜集整理一些实用技巧以解大伙们的燃眉之急,需要了解的朋友可以参考下
    2012-12-12

最新评论