zoukankan      html  css  js  c++  java
  • 小知识随手记(五)

    1、函数内部属性

      函数内部,有两个特殊的对象:arguments 和 this。

      arguments 是一个类数组对象,包含着传入函数中的所有参数,主要用途是保存函数参数。但这个对象还有一个名叫 callee 的属性,该属性是一个指针指向拥有这个 arguments 对象的函数

      对于阶乘函数一般要用到递归算法,所以函数内部一定会调用自身;如果函数名不改变是没有问题的,但一旦改变函数名,内部的自身调用需要逐一修改。为了解决这个问题,我们可以使用 arguments.callee 来代替实现递归

    function box(num) {
       if (num <= 1) {
           return 1;
       } else {
           return num * arguments.callee(num-1);//使用 callee 来执行自身
    }
    }

    3、JS保留小数点后位数:

    (1)toFixed():里面的参数就是保留小数的位数。返回结果为一个String类型

    var num=22.127456;
    alert( num.toFixed(2));//22.13,四舍五入

    toFixed自带补位功能

    var num = 55.3; 
    console.log(num.toFixed(2));//55.30

    (2)round()方法可把一个数字舍入为最接近的整数。无补位功能

    var num=22.127456;
    alert( Math.round(num*100)/100);

    上面的方法有四舍五入的功能,但没有补位的功能,可以通过以下方式实现

    var num1 = parseFloat(55); 
    if (!isNaN(num1)) { 
        num1 = Math.round(num1*100)/100; 
        var str = num1.toString(); 
        var rs = str.indexOf('.'); 
        if (rs < 0) { 
        rs = str.length; 
        str += '.'; 
    } 
    while (str.length <= rs + 2) { 
        str += '0'; 
    } 
    console.log("将浮点数四舍五入,取小数点后2位,位数不够进行补位:");
    console.log(str);
    }

    (3)substr直接按字符串截取:这种方式没有四舍五入的功能,直接按位截取的,也没有补位功能

    var num1 = 55.3785 + ""; 
    console.log("substr方式保留两位小数:");
    console.log(num1.substr(0,num1.indexOf(".")+3));//55.37

     4、jQuery获取父窗口里的元素

    $("#父窗口元素ID",window.parent.document);          对应javascript版本为window.parent.document.getElementById("父窗口元素ID");

    $('body',window.parent.document).height();
    //获取父窗口body高度

    5、select根据某个值动态选中

    (1)注意下面此种需要option里有加value属性才可以,当然不止value属性,随便加个属性,均可通过此种方式获取

    <select id="select_id" >  
        <option value="0" >请选择</option>  
        <option value="1">苏宁易购</option>  
        <option value="2">天猫旗舰店</option>   
    </select>  
    $("#select_id option[value='1']").removeAttr("selected");//根据值去除选中状态    
    $("#select_id option[value='"+ soft.id +"']").attr("selected","selected");//根据值让option选中

     6、获取一组radio被选中项的值

    $('input[name="abc"]:checked')//选中
    $('input:radio:checked').val()//选中
    $('input[name="abc"]').filter(":checked").val()//选中
    $('input[name="abc"]:eq(1)').val()//某个特定
    $('input[name="abc"]').eq(1).val()//某个特定
    $('input[name="abc"]').each(function(){//每一个
         alert(this.value);
    })

    7、(1)为什么我的vertical-align属性不起作用?vertical-align,称之为“inline-block依赖型元素",只有一个元素属于inline或是inline-block水平,其身上的vertical-align属性才会起作用。所谓inline-block水平的元素,就是既可以与inline水平元素混排,又能设置高宽属性的元素。哪些元素呢,例如图片,按钮,单复选框,单行/多行文本框等HTML控件,只有这些元素默认情况下会对vertical-align属性起作用。

    (2)vertical-align的属性:

    text-bottom是与父标签的文字底部对齐,而bottom是相对于父标签的底部对齐(一个是内容区底部,一个是标签区底部

    8、jquery实现手机验证码发送倒计时60s

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript"> 
    var countdown=60; 
    function settime(obj) { 
        if (countdown == 0) { 
            obj.removeAttribute("disabled");    
            obj.value="免费获取验证码"; 
            countdown = 60; 
            return;
        } else { 
            obj.setAttribute("disabled", true); 
            obj.value="重新发送(" + countdown + ")"; 
            countdown--; 
        } 
        setTimeout(function() { 
            settime(obj) 
        },1000)
    }
    </script>
    <body> 
    <input type="button" id="btn" value="免费获取验证码" onclick="settime(this)" />
    </body>
    </html>

    9、【回归基础】JavaScript 函数中默认参数:

      默认参数允许你设置参数的默认值。默认情况下,JavaScript 函数的所有参数都是 undefined (未定义的)。默认参数允许你设置不同的默认值。请考虑以下示例:

    function logFirst(data){
      console.log(data[0]);
    }

      这个例子是说,我们有一个简单的函数,打印数组中的第一个元素。该函数需要一个参数,data ,我们期望它是一个 Array 数组。但是如果没有数据传入,会发生什么?

        logFirst();
        // Uncaught TypeError: Cannot read property '0' of undefined  
        // 未捕获的输入错误:无法读取 undefined 的 '0' 属性

      我们收到一个错误。 因为 data 未被传递到我们的函数中,因此被默认为 undefined (未定义的)。

      我们如何解决这个问题? 你可以使用默认参数。 要使用默认参数,只需传递 (parameter = defaultValue) 。 这里我们将参数的默认值设置为 ['cats'] 数组。

    function logFirst(data = ['cats']){
       console.log(data[0]);
    }
    logFirst();//cats

      现在当我们运行没有任何传入的函数时,data 的值将默认为数组 ['cats']:它返回默认值 cats最重要的是,如果我们提供一个参数,它将覆盖默认值

    logFirst(['dogs']);
    // dogs

      还可以在单个函数中拥有多个默认参数:

        function logFirst(num = 0, data = ['cats']){
          console.log(`I own ${num} ${data[0]}.`);
        }
        logFirst();
        // I own 0 cats.
        logFirst(2);
        // I own 2 cats.
        logFirst(undefined,['dogs']);
        // I own 0 dogs.

      PS:你如果不是用ES6语法,默认参数可以这样写:var num = num || 1 ;

        function logNum(num){
          var num = num || 1 ; // 当参数 num 为 false 时,重新赋值 num  
          console.log( "默认参数 num : " + num );
        }
        logNum();
        // 默认参数 num : 1

      这里第2行的意思是,当参数 numfalse 时,重新赋值 num1

  • 相关阅读:
    一些程序员可以了解的项目/内容
    为人处世的细节(转自知乎):不炫富, 不哭穷
    centos 6.5 搭建ftp 服务器(vsftpd的配置文件说明)
    linux安装脚本
    Sublime Text3 + Golang搭建开发环境
    go语言环境搭建+sublime text3(windows环境下)
    Enterprise Solution 企业管理软件开发框架
    DotnetSpider爬虫采集博客园
    underscore.js 源码
    Xamarin
  • 原文地址:https://www.cnblogs.com/goloving/p/7418323.html
Copyright © 2011-2022 走看看