作者: admin

  • 解决:js换算百分比的总和相加不为100%的问题

    js 相加 相减 结果 余数 图表 环形 数字 算数

    做项目时候,后台会提供一段数据,前端需要把数据转换成百分之,即是把单个值除以它们的总和,但是每个值按照这样的思路计算后发现有可能换算成的百分值在相加并不等于100%。

    如下图:

    每个百分比的值相加只等于98%,这结果是不合理的。

     

    解决思路就是:把剩下最后一个大于0的值用100减去前几个百分比的总和。

    如下图:

    为了减少误差,保留了2位小数。

     

    注意js在进行加减运算时,可能会有点问题,如:

    0.2+0.3=0.500000001 //正确应该是0.5

    或者

    100-51.12=48.8799999 //正确应该是48.88

    遇到这种问题我一般解决方法是:

    例如  (Math.round( (100-51.12)*100 ))/100  //结果就是48.88

     

    最终封装方法

    per_arry([0,0,0,0,0,42.32,1]);  //传入要转化为百分比的数组
    
    function per_arry(arry) {
      var lenders_age_arry=arry;
      var lenders_tol=0;
    
      var gt_zero=0 ;//判断几个值大于0
      var res_arry=[]; //最终结果
    
      var last_gt_index=0; //存放最后一个大于0的值所在的索引
      var befor_num_sum=0; //除最后一个,将之前大于0的百分值相加
      $(lenders_age_arry).each(function (index,value) {
         if( value>0 ){
           gt_zero++;
           last_gt_index=index;
           lenders_tol=lenders_tol+parseFloat(value);
         }
      });
    
    
      if(gt_zero==0 || gt_zero==1){ //全值都是0 或者 只有一个值时
         res_arry=lenders_age_arry;
      }
    
      if(gt_zero>1){
    
        $(lenders_age_arry).each(function (index,value) {
          if( value>0 ){
            if(last_gt_index==index){
               res_arry.push( (Math.round((100-befor_num_sum)*100))/100 ) ;
            }else{
               res_arry.push( Math.round(parseFloat((value/lenders_tol)*10000))/100 ) ;
               befor_num_sum=befor_num_sum+ (Math.round(parseFloat((value/lenders_tol)*10000))/100);
            }
          }else{
            res_arry.push(0) ;
          }
        });
    
      }
    
      return res_arry;
     }

     

     

  • angular 1.3.x 笔记

    笔记基于angular 1.3.17 ,虽然现在有2.x还听说1.x和2.x是 跳崖式的升级,很多方法都不一样了,没办法只能去学习老版本了公司项目是基于老版本开发的。

    https://www.bootcdn.cn/angular.js/1.3.17/

    以上链接还包括一些扩展功能,例如cookie插件、动画效果插件、类似ajax功能的插件等等

     

    代码总揽

    <body ng-app="phonecatApp">
    
     <div ng-controller="PhoneListCtrl">
       <li ng-repeat="phone in phones">
         <span>{{phone.name}}</span>
         <span>{{phone.snippet}}</span>
       </li>
     </div>
    
    
     <script>
      var phonecatApp = angular.module('phonecatApp', ['infinite-scroll', 'timer']); // 创建module
    
      phonecatApp.controller('PhoneListCtrl', function ($scope, $http,$rootScope) {
        $scope.phones = [
          {'name': '名字1','snippet': '内容1'},
          {'name': '名字2','snippet': '内容2'},
          {'name': '名字3','snippet': '内容3'}
        ];
      });
    
     </script>
    
    </body>

     

    效果:

     

     

    遮丑

    [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
      display: none !important;
    }
    <body ng-app="phonecatApp" ng-cloak>

     

     

    全局变量

    phonecatApp.controller() 独立的控件之间变量是不能传递,这些需要全局,在任意xx.controller()中都可以调用。

     var phonecatApp = angular.module('phonecatApp', ['infinite-scroll']);
     phonecatApp.run(function($rootScope){  //声明全局
        $rootScope.people ={
           name:'小明',
           age:'12',
           tel:'12233333333'
        };
     });
    
    
     phonecatApp.controller('PhoneListCtrl', function ($scope, $http,$rootScope) {
        console.log($rootScope.people.name)  //小明
     });

     

     

     

     

    class判断

     <!--第一种 直接加变量--> 
     <div ng-class="tempClass"></div> 
    
     <!--第二种 用{{}} 包住的变量表达式--> 
     <div ng-class="{{bClass}}"></div> 
    
     <!--第三种--> 
     <div ng-class="{'red':num,'green':!num}"></div> 
    
     <!--第四种--> 
     <div ng-class="{true:'green',false:'red'}[num]"></div> 
    
    
    
    app.controller('frist',function($scope){ 
      $scope.tempClass = 'green'; 
      $scope.bClass = "{'red':true,'green':false}" 
      $scope.num = true; 
    }

     

     

    滚动加载

    借助插件:https://cdn.bootcss.com/ngInfiniteScroll/1.2.0/ng-infinite-scroll.min.js

     

    <script src="angular.min.js"></script>
    <script src="ng-infinite-scroll.min.js"></script>
    
    
    <div ng-controller="PhoneListCtrl">
     <div class="box" infinite-scroll="loadMore()" infinite-scroll-disabled="scroll_status" infinite-scroll-distance='1'>
        <li ng-repeat="phone in phones">
          <span>{{phone.name}}</span>
          <span>{{phone.snippet}}</span>
        </li>
     </div>
    </div>
    
    var phonecatApp = angular.module('phonecatApp', ['infinite-scroll']); // 创建module,这里要注入infinite-scroll插件之后才可以使用其方法
    phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
    
       $scope.scroll_status=false;
    
       $scope.loadMore =function () {
          $scope.scroll_status=true;  //滚动到底部,正在加载数据,禁止多次执行
          console.log('到底部了');
       }
    
    });

     

    infinite-scroll  //box容器里面的内容滚动到底部的时候会执行loadMore()的函数

    infinite-scroll-disabled  //默认为false,作用是防止滚动到底部的瞬间可能会造成多次执行loadMore()的时候,值为true时就停止了infinite-scroll的回调,也就是不执行loadMore()了

    infinite-scroll-distance //值默认为0时,效果就是内容一定要滚动到底部的时候才会触发函数,如果值越大,会感觉到稍微滚动一点点也会触发到infinite-scroll回调执行loadMore()

     

     

     

  • js禁止后退 监听手机物理倒退按键

    js 禁止 倒退 监听手机实体退回按键 后退 禁止

    有些时候我们的一些业务逻辑是需要线性执行,不能退回,要么就重来。

    为了防止用户中途倒退,可以使用以下js监听。

    history.pushState(null, null, location.href);
    window.addEventListener('popstate', function(event) {
        history.pushState(null, null, location.href );
        //这里写一旦用户点击物理按键,就会执行回调。
        window.location.href='当前页面url' //倒退永远刷新的都是本地页面
        alert("我监听到了浏览器的返回按钮事件啦");
    });


    本人使用三星s8和iphone 6手机可以成功执行,其他手机未测试

  • 浏览器被毒霸网址大全篡改

    1,看看自己是不是安装了驱动精灵,卸载。

    2,进注册表,HKEY_CURRENT_USER/SOFTWARE/Microsoft/Internet Explorer/Main

    3,在右侧找到”Start Page”,将里面的值删除。

    4,打开谷歌,进去“设置”,

    将原来的毒霸地址删除。

    5,重启

    https://jingyan.baidu.com/article/e73e26c09c704824adb6a7c5.html

  • 不能汉化 八方旅人全区域版1.0.2汉化版

    本人的机子是6.0.0的系统,使用的是SXOS破解系统。要想汉化成功就必须使用sxos2.0版本低于2.0的一概都不会成功。

    解压出来的SXOS的目录直接复制到内存卡根目录即可。还有不要使用mac解压可能也会出问题。

    SXOS的目录结构: SXOS/titles/010057d006492000
    REINX的目录结构:REINX/titles/010057d006492000
    大气层的目录结构: atmosphere/titles/010057d006492000

    这里要注意楼主发的默认是带sxos文件夹的,
    大家要把里面的010057d006492000文件弄出来复制进去,仔细理解这句话。

     

    八方旅人全区域版1.0.2汉化版
    https://pan.baidu.com/s/1TAQFZk_wTgPQPE8hgeL3bw 密rgbz

    http://club.tgfcer.com/viewthread.php?tid=7512336