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

  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/goloving/p/7418323.html
Copyright © 2011-2022 走看看