onclick和@click有什么区别,究竟哪个更好使?

news2024/11/18 2:24:49

哈喽小伙伴们大家好,我是爱学英语的程序员,今天来给大家分享一些关于vue中事件绑定相关的内容,希望对大家有所帮助.

场景是这样的:我要实现一个切换栏,默认激活的是第一个标签,当鼠标移动到第二个标签是,对应的内容让激活.起初,我第一时间想到的是用element plus的组件来实现这个效果,但实现过程中也遇到了一些问题,由于它自带的默认样式没有办法清除,所以我只能写俩div来手动编写样式了.但是实现过程中遇到了一个问题:我的方法没有被定义!?什么玩意儿,我明明定义了呀.

以下是我的实现流程

第一步:写两个div

<div class="selectab" style="display: flex">
  <div id="projectInfo" class="tab-item active-tab" @click="activateTab('projectInfo')">项目信息</div>
  <div id="midTermSummary" class="tab-item" @click="activateTab('midTermSummary')">中期总结</div>
</div>

第二步:编写默认样式和激活的样式

.selectab {
  display: flex;
}
.tab-item {
  margin-right: 20px;
  padding-bottom: 15px;
  color: black; /* 默认颜色 */
  border-bottom: 1px solid transparent; /* 默认无底部边框 */
  cursor: pointer;
}
.tab-item.active-tab {
  color: #6594f1; /* 激活后的颜色 */
  border-bottom-color: #6594f1; /* 激活后的底部边框颜色 */
}

第三步:定义方法

activateTab(tabId: string) {
  // 移除所有标签项的 active-tab 类
  var tabs = document.querySelectorAll('.tab-item');
  tabs.forEach(function(tab) {
    tab.classList.remove('active-tab');
  });

  // 给点击的标签添加 active-tab 类
  var tabToActivate = document.getElementById(tabId);
  if (tabToActivate) {
    tabToActivate.classList.add('active-tab');
  }
},

你以为它能正确运行,然后,现实却是这样的.......

到底问题在哪呢?

看了好久才发现,我的方法绑定有问题!相信,看到这里的你也应该知道问题在哪了吧

在vue中给组件绑定方法用的是@click,谁让你用onclick的,肯定不行呀

改了之后就正常运行了.

那今天既然遇到这个问题了,咱就来好好捋一捋它背后的原理.

因为 Vue.js 和其他现代前端框架采用了一种声明式的方法来管理事件绑定和 DOM 操作,相比传统的 onclick 属性,有以下几个优点:
(1)分离关注点:
使用 @click 或其他类似指令可以将 HTML 结构与 JavaScript 逻辑分离开来。这种方式使得代码更易于理解和维护,因为你可以在模板中专注于声明你希望处理的事件,而不必在 HTML 中插入大段的 JavaScript 代码。
(2)更好的组件化:
在现代前端开发中,通常使用组件化的方式来构建用户界面。每个组件都有自己的模板、样式和逻辑。使用 @click 等指令可以方便地将事件处理逻辑与组件的其他部分隔离开来,使得组件更加可重用和独立。
(3)响应式更新:
Vue.js 的核心概念之一是数据驱动视图的响应式更新。使用 @click 通过 Vue 实例的数据和方法来处理事件,可以确保界面的状态和视图的同步更新,而不需要手动处理 DOM 元素的状态。
(4)更丰富的功能:
@click 和类似的指令提供了更丰富的功能和灵活性。你可以在模板中方便地绑定事件、处理数据、调用方法,甚至传递参数,而传统的 onclick 机制更为受限,通常只能直接调用预定义的全局函数或者直接在 HTML 中写入 JavaScript 代码。

那为什么使用onclick来绑定方法的时候控制台会报错呢,提示方法没有被定义,接下来,情继续往后看

如果你在使用 onclick 属性而不是 Vue.js 中的 @click 指令,并且控制台提示方法未定义,可能有几个原因:
(1)作用域问题:
如果你在使用 onclick 属性时,需要确保定义的 JavaScript 函数在全局作用域内可见。这意味着你的函数不能被包裹在其他作用域(如某个函数、类、或其他代码块)中,否则 HTML 中无法直接访问到它。
(2)加载顺序:
如果在 HTML 中直接使用 onclick 属性调用 JavaScript 函数,确保该函数在 HTML 元素之前已经定义。JavaScript 是逐行解释执行的,如果调用了未定义的函数,就会导致控制台报错。
(3)语法错误:
检查你的 JavaScript 函数是否有语法错误,或者函数名是否拼写正确。即使是小写字母的错误也会导致函数无法正确调用。
(4)事件处理的限制:
onclick 属性仅限于简单的函数调用,它不能像 Vue.js 的 @click 那样处理更复杂的逻辑或传递参数。如果你的函数需要接收参数或处理更复杂的逻辑,可能需要使用更先进的前端框架或库来管理事件和状态。
(5)跨域问题:
在某些情况下,特别是在使用外部资源加载页面或跨域脚本时,浏览器安全策略可能会阻止使用 onclick 调用未定义的函数。确保你的环境允许在 HTML 中直接调用全局函数。

那看到这里,大家觉得我的问题在哪里呢?

很显然,我用的是传统的方法去加载这两个div,然而,加载组件是需要消耗一定的资源和时间的,如果我在这里直接写了两个方法,组件还没有被加载完,方法就已经被调用了,都不存在,你调用谁呢?肯定有问题呀!

好啦,本期文章先到这里,我们下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1896925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从“NLP技术”到“AI大模型”

自从AI大模型问世以来&#xff0c;仿佛很少有人提及NLP技术这个词了。昨天休息的时候突然在想一个问题&#xff0c;AI大模型已经如此强大了&#xff0c;还需要传统的NLP技术吗&#xff1f; 传统的NLP技术指&#xff1a;从分词&#xff08;ws&#xff09;、词性标注&#xff08;…

【半导体行业推荐】PFA酸纯化器 特氟龙材质 酸蒸馏仪

PFA酸纯化器是一种实验室设备&#xff0c;专门用于制备高纯度的酸&#xff0c;这些高纯酸在化学分析、材料科学、半导体制造、光伏产业、生物医学研究等领域有着重要应用。以下是PFA酸纯化器的一些关键特性和功能&#xff1a; 1. 高效提纯&#xff1a;PFA酸纯化器通过先进的膜…

go语言day09 通道 协程的死锁

Go语言学习——channel的死锁其实没那么复杂 - JackieZheng - 博客园 (cnblogs.com) 目录 通道 创建通道 1&#xff09;无缓冲通道 2&#xff09;有缓冲通道 通道的使用 1) 值从通道入口进 2) 值从通道出口出 信道死锁&#xff1a; 0&#xff09;死锁现场0 1&#xff09;死…

Twitter批量发送消息api接口如何申请配置?

Twitter批量发送消息API接口的功能&#xff1f;接口有哪些限制&#xff1f; 企业和开发者越来越多地需要在Twitter上批量发送消息。然而&#xff0c;申请和配置这个接口需要一定的步骤和注意事项。AokSend将详细介绍如何申请和配置Twitter批量发送消息API接口。 Twitter批量发…

静力水准仪:测量与安装的全面指南

静力水准仪作为一种高精度的测量仪器&#xff0c;广泛应用于管廊、大坝、核电站、高层建筑、基坑、隧道、桥梁、地铁等工程领域&#xff0c;用于监测垂直位移和倾斜变化。本文将详细介绍静力水准仪的工作原理、特点及其安装过程中的注意事项&#xff0c;旨在为相关工程人员提供…

sql业务场景分析思路参考

1、时间可以进行排序&#xff0c;也可以用聚合函数对时间求最大值max&#xff08;时间&#xff09; 例如下面的例子&#xff1a;取最晚入职的人&#xff0c;那就是将入职时间倒序排序&#xff0c;然后limit 1 表&#xff1a; 场景&#xff1a;查找最晚入职员工的所有信息 se…

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题&#xff0c;解决起来会费时间&#xff0c;做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的&#xff0c;而且有主启动函数也不能run 右键pom文件&#xff0c;点击Add as Maven Project 如果…

215. 数组中的第K个最大元素(中等)

215. 数组中的第K个最大元素 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;215. 数组中的第K个最大元素 2.详细题解 快速排序算法在每一轮排序中&#xff0c;随机选择一个数字 x x x&#xff0c;根据与 x x x的大小关系将要排序的数…

C++ 引用——引用的基本语法

引用的基本使用 作用&#xff1a;给变量起别名 语法&#xff1a;数据类型 &别名 原名 示例&#xff1a; 运行结果&#xff1a;

【网络安全】漏洞挖掘之Spring Cloud注入漏洞

漏洞描述 Spring框架为现代基于java的企业应用程序(在任何类型的部署平台上)提供了一个全面的编程和配置模型。 Spring Cloud 中的 serveless框架 Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数…

【微信小程序开发实战项目】——花店微信小程序实战项目(4)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

创新引领,构筑产业新高地

在数字经济的浪潮中&#xff0c;成都树莓集团以创新驱动为核心&#xff0c;通过整合行业资源、优化服务、培养数字产业人才等措施&#xff0c;致力于打造产业高地&#xff0c;推动地方经济的高质量发展。 一、创新驱动&#xff0c;引领产业发展 1、引入新技术、新模式&#xf…

作为图形渲染API,OpenGL和Direct3D的全方位对比。

当你在网页看到很多美轮美奂的图形效果&#xff0c;3D交互效果&#xff0c;你知道是如何实现的吗&#xff1f;当然是借助图形渲染API了&#xff0c;说起这个不就不得说两大阵营&#xff0c;OpenGL和Direct3D&#xff0c;贝格前端工场在本文对二者做个详细对比。 一、什么是图形…

05-《猪笼草》

猪笼草 猪笼草是猪笼草属全体物种的总称。属于热带食虫植物&#xff0c;原产地主要为旧大陆热带地区。其拥有一个独特的吸取营养的器官——捕虫笼&#xff0c;捕虫笼呈圆筒形&#xff0c;下半部稍膨大&#xff0c;笼口上具有盖子&#xff0c;因其形状像猪笼而得名。 猪笼草 形…

【MySQL】事务实现原理

目录 事务 如何使用 ACID 原子性(Atomicity) 原子性实现原理 持久性(Durability) 持久性实现原理 隔离性 隔离级别 读未提交 读已提交 可重复读 串行化 隔离级别原理 锁 共享锁&独占锁 意向锁 索引记录锁 间隙锁 临键锁 插入意向锁 自增锁 MVCC 实现…

【杂交版】植物大战僵尸杂交版v2.1最新版本下载链接

B站游戏作者潜艇伟伟迷于6月13日中午更新了植物大战僵尸杂交版2.1版本&#xff0c;有老版本的也可以完美继承存档数据。 不多废话下载链接放上&#xff1a; 夸克网盘链接&#xff1a;https://pan.quark.cn/s/095de551d1d1 UC网盘链接&#xff1a;https://drive.uc.cn/s/86debb3…

pdf压缩教程:pdf怎么压缩的小一点?6个方法轻松搞定!

大多数用户在上传PDF文件到网站时&#xff0c;常常遇到文件大小限制的问题。当PDF文件含有大量图片、图形和内容时&#xff0c;文件大小会变得过大&#xff0c;因此我们需要将其压缩至网站所要求的大小&#xff0c;才能成功上传。那么&#xff0c;pdf怎么压缩的小一点 呢&#…

微信扫普通二维码打开小程序-详细实现

微信扫普通二维码链接打开小程序的官方文档地址&#xff1a;扫普通链接二维码打开小程序 | 微信开放文档 我们讲一下开发中的避坑点。 获取链接参数 本人项目采用UNIAPP&#xff0c;所以在开发的时候&#xff0c;牵扯打开页面的特殊性&#xff0c;在onLoad生命周期不执行。在…

华为OD机试2024年最新题库 JAVA C卷+D卷

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…