//实现点击累加效果的几种方式对比Author:李金涛;Time:2018-1-1(新年新气象,更上一层楼。持续写博客。不断总结优化,博观约取,才能厚积薄发!)//    1,利用全局作用域不销毁的原理,把需要累加的变量定义为全局变量。//弊端:在项目中为了防止全局变量之间的冲突,我们一般是禁止或者减少使用全局变量。//   2,自己形成一个不销毁的私有作用域来保存我们需要累加的变量。//    (1),用自执行函数包起来;//    (2),把自执行函数的返回值函数赋值给变量。//弊端:有一个不销毁的私有作用域,所以占内存。//   3,利用innerHTML既能存取值,也能获取值的原理。每次点击时想到页面取最新的值,累加完后在放回去。//弊端:每一次都需要把页面中的内容先取出来,转换成数字然后累加,最后重新放回去。当重新放回去时,浏览器都需要重新渲染。//   4,自定义属性存储(推荐):这样就没有作用域那点弊端之说。
<div id="box">    <h3>问题:认为杨幂很漂亮的请狂点~~</h3>    <div id="btn">我非常非常同意以上观点&nbsp;&nbsp;<span id="spanNum">0</span></div></div>
<style>   #box{  width: 300px;  margin: 100px auto;  }   #btn{  background-color: #ccc;  }   #spanNum{  color: red;  }</style>

<script type="text/javascript"> var oBtn=document.getElementById("btn");    var spanNum=document.getElementById("spanNum");//    1,利用全局作用域不销毁的原理,把需要累加的变量定义为全局变量。//    var count=0;//    oBtn.οnclick=function () {//        count++;//        spanNum.innerHTML=count;//    };//    弊端:在项目中为了防止全局变量之间的冲突,我们一般是禁止或者减少使用全局变量。

//2,自己形成一个不销毁的私有作用域来保存我们需要累加的变量。//    (1),用自执行函数包起来;//    +function () {//        var count=0;//        oBtn.οnclick=function () {//            count++;//            spanNum.innerHTML=count;//        };//    }();//    (2),把自执行函数的返回值函数赋值给变量。//    oBtn.οnclick=(function () {//        var count=0;//        return function () {//            count++;//            spanNum.innerHTML=count;//        };//    })();//此处易写错,请千万注意;//    弊端:有一个不销毁的私有作用域,所以占内存。

//    3,利用innerHTML既能存取值,也能获取值的原理。每次点击时想到页面取最新的值,累加完后在放回去。//    oBtn.οnclick=function () {//        spanNum.innerHTML++;//++除了加1,还默认转换成Number//        spanNum.innerHTML-=(-1);//        spanNum.innerHTML=spanNum.innerHTML-0+1;//        spanNum.innerHTML=Number(spanNum.innerHTML)+1;//    };//    弊端:每一次都需要把页面中的内容先取出来,转换成数字然后累加,最后重新放回去。当重新放回去时,浏览器都需要重新渲染。

//    4,自定义属性存储(推荐):这样就没有作用域那点弊端之说。//    oBtn.count=0;//count属性初始值为0.//    oBtn.οnclick=function () {//每点击一次在当前值上加1;//         spanNum.innerHTML=++this.count;//    };

</script>

转载于:https://www.cnblogs.com/ljt1412451704/p/8168437.html

【总结】实现点击累加效果的几种方式对比相关推荐

  1. 元素隐藏的三种方式对比(针对移动端项目中的按钮,先隐藏且不能被点击 visibility:hidden)

    元素隐藏的三种方式对比 display:none opacity:0 visibility:hidden 项目需求 表面一个图片遮罩,鼠标hover遮罩消失,内部元素展现,其中有一个按钮在移动端是手指 ...

  2. Vue项目点击刷新页面的三种方式

    Vue项目点击刷新页面的三种方式 一.原生js刷新方式: location.reload(); 二.Vue框架自带的路由跳转方式: this.$router.go(0); 三.在App.vue页面声明 ...

  3. android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条

    [实例简介] Android 三种方式实现自定义圆形页面加载中效果的进度条 [实例截图] [核心代码] ad376a86-a9aa-49bc-8cea-321bcff2c0c3 └── AnimRou ...

  4. AngularJS中实现显示或隐藏动画效果的3种方式

    本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...

  5. 前端实现动画效果的几种方式(有实例)

    现在对于前端的要求变大了很多,随着时代进步,人们的审美越来越挑剔,对于用户交互的体验成为了公司竞争的一大助力.而动画效果,可以说是最有效的提高用户体验的方式了.但是对于前端来说,实现动画的方法也有很多 ...

  6. css 实现虚线效果的3种方式详解

    一.效果 首先可以看一下下图显示的实现效果: 用三种方式实现了虚线效果: 点击查看demo代码 二.实现 1.border 属性 查看 mdn 的 border,我们知道 border 可以用于设置一 ...

  7. rp导入图片大小_Axure制作图像的放大与缩小效果的四种方式

    1.新建Axure RP项目,取名"Axure制作图像的放大与缩小效果" 2.拖入动态面板控件,取名"放大缩小".设置大小为560*330px.坐标为x:300 ...

  8. 百度地图点击marker换图标的两种方式

    首先在页面把要替换的图标引入 import newIcon from "../../../../static/image/startIcon.png" 第一种方式:使用百度地图ap ...

  9. 字体滚动实现效果的几种方式

    一. 第一种方式 <ul:class="{ marquee_top: animate }"@mouseenter="Stop()"@mouseleave= ...

最新文章

  1. AI研发新药登上Nature子刊:46天合成潜在新药候选分子,比传统方法快15倍 | 开源...
  2. python在线读-Python测试之道
  3. ElasticSearch---------------------Elasticsearch Clients---------------------JAVA API
  4. 笔记-项目风险管理-复习要点
  5. 把数据导出Excel
  6. jsp 页面刷新_如何应用XML+XSLT+AJAX组合技术实现无刷新数据查询
  7. 010 、JVM实战总结: 动手实验:亲自感受一下线上系统部署时如何设置JVM内存大小
  8. 2019-04-17 PowerShell基本语法
  9. dvm与art的区别_Android运行时– DVM与ART,AOT与JIT
  10. DNN永日新闻模块(YongRi)免费1.00.09版本下载
  11. BT1120,模拟视频输入输出格式
  12. 进程调度算法Java
  13. 点云学习笔记1——激光雷达的原理
  14. linux 磁盘格式化xfs,大磁盘分区格式化XFS文件系统
  15. 根据pix飞控log文件和photo文件夹建立pos文件,提取pos数据小程序
  16. floyd-warshall算法浅理解
  17. 用python模拟一个文本浏览器来抓取网页
  18. vue使用地图api
  19. 坐南京13路公交车,体验《头文字D》感觉!
  20. 腾讯课堂 H5 直播间点赞动效实现

热门文章

  1. SQLAlchemy schema.Table
  2. flask v0.1 路由
  3. MySQL Return JSON Value Attributes
  4. C语言输出九九乘法表
  5. CentOS7安装软件包的方法
  6. 禁用计算机管理器,任务管理器被禁用怎么关闭adobe
  7. 大蜘蛛序列号_Datacolor SpyderX 蓝蜘蛛 (红蜘蛛)校色仪 使用教程
  8. oracle写完存储过程之后,oracle存储过程和自定义函数
  9. 阿里分布式数据库服务实践
  10. Java设计模式学习总结(12)——结构型模式之外观模式