原生-购物车计数器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div div { width: 20px; text-align: center; line-height: 20px; height: 20px; background-color: white; border: 1px solid #000000; cursor: pointer; float: left; } input{ width: 40px; height: 18px; border: 1px solid #000000; border-left: none; border-right:none ; background-color: white; float: left; text-align: center; outline: none; } </style> </head> <body> <div> <div class="subtractBn">-</div> <input type="text" value="1"> <div class="addBn">+</div> </div> <script> var subtractBn=document.querySelector(".subtractBn"); var addBn=document.querySelector(".addBn"); var input=document.querySelector("input"); var sum=1; subtractBn.addEventListener("click",clickHandler); subtractBn.addEventListener("mousedown",clickHandler); addBn.addEventListener("click",clickHandler); addBn.addEventListener("mousedown",clickHandler); input.addEventListener("input",inputHandler); function clickHandler(e) { if(e.type==="mousedown"){ e.preventDefault(); return; } if(this.textContent==="+"){ sum++; if(sum>99) sum=99; }else{ sum--; if(sum<1) sum=1; } input.value=sum.toString(); } function inputHandler(e) { input.value=input.value.replace(/[^0-9]/g,""); if(Number(input.value)>99){ sum=99; input.value=sum; return; } if(Number(input.value)<1){ sum=1; input.value=sum; return; } sum=Number(input.value); } </script> </body> </html>
分类:
js
« 上一篇: vue-day07&day08----路由、路由常用的配置项、vue路由的内置组件、vue路由跳转的方式、路由传值、路由解耦(路由传值的一种方式)、编程式导航、嵌套路由children、路由元信息meta、路由生命周期(路由守卫)、路由懒加载、vue/cli、webpack配置alias、vue/cli中配置alias、vue-router底层原理、单页面开发的缺点、路由报错
» 下一篇: vue-day09----vuex、vuex传递数据流程、vuex的底层原理、vuex实现todolist、vuex辅助函数、vuex的modules配置项、vuex中数据丢失了如何解决、mock数据和json-server的使用
» 下一篇: vue-day09----vuex、vuex传递数据流程、vuex的底层原理、vuex实现todolist、vuex辅助函数、vuex的modules配置项、vuex中数据丢失了如何解决、mock数据和json-server的使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结