zoukankan      html  css  js  c++  java
  • 【总结】实现点击累加效果的几种方式对比

    //实现点击累加效果的几种方式对比
    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{ 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.onclick=function () {
    // count++;
    // spanNum.innerHTML=count;
    // };
    // 弊端:在项目中为了防止全局变量之间的冲突,我们一般是禁止或者减少使用全局变量。

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

    // 3,利用innerHTML既能存取值,也能获取值的原理。每次点击时想到页面取最新的值,累加完后在放回去。
    // oBtn.onclick=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.onclick=function () {//每点击一次在当前值上加1;
    // spanNum.innerHTML=++this.count;
    // };

    </script>
  • 相关阅读:
    psy & vr
    psy 2
    psy
    linux c中select使用技巧
    hostent h_addr_list
    gethostbyname() -- 用域名或主机名获取IP地址
    c_select 调用参数说明
    [NYOJ 737] 石子合并(一)
    [HDU 1059] Dividing
    [HDU 1789] Doing Homework again
  • 原文地址:https://www.cnblogs.com/ljt1412451704/p/8168437.html
Copyright © 2011-2022 走看看