• 通用编程题


    1.function maxDivisor(num1,num2){
       var max=num1>num2?num1:num2,
           min=num1>num2?num2:num1;
    输入两个数字,输出这两个数字的最大公约数。如16,4输出4。

      for(var i=min;i>=1;i--){
          if(max%i==0&&min%i==0){
             return i;
          }
       }
    }

    function minDivisor(num1,num2){
       var max=num1>num2?num1:num2,
           min=num1>num2?num2:num1;
       for(var i=max;i>=max;i++){
          if(i%max==0&&i%min==0){
             return i;
          }
       }

    }

    如何消除一个数组里面重复的元素?

    var arr1 =[1,2,2,2,3,3,3,4,5,6],

        arr2 = [];
    for(var i = 0,len = arr1.length; i< len; i++){
        if(arr2.indexOf(arr1[i]) < 0){
            arr2.push(arr1[i]);
        }
    }

    document.write(arr2);

    希望获取到页面中所有的checkbox怎么做?(原生JS)

    var domList = document.getElementsByTagName(‘input’)
    var checkBoxList = [];
    var len = domList.length;  //缓存到局部变量
    while (len--) {  //使用while的效率会比for循环更高
      if (domList[len].type == ‘checkbox’) {
          checkBoxList.push(domList[len]);
      }
    }

     console.log(typeof fn);

        function fn() {};

        var fn;

    1.变量声明

    2.函数声明

    因为函数声明优于变量声明。我们知道在代码逐行执行前,函数声明和变量声明会提前进行,而函数声明又会优于变量声明,这里的优于可以理解为晚于变量声明后,如果函数名和变量名相同,函数声明就能覆盖变量声明。所以以上代码将函数声明和变量声明调换顺序还是一样结果。

     var f = true;

        if (f === true) {

          var a = 10;

        }


        function fn() {

          var b = 20;

          c = 30;

        }


        fn();

        console.log(a);

        console.log(b);

        console.log(c);

    输出:10 报错 30  
    发现function内的新声明的变量才是局部变量,而没有用var声明的变量在哪里都是全局变量。再次提醒切记只有function(){}内新声明的才能是局部变量

     <!-- 实现一段脚本,使得点击对应链接alert出相应的编号 (使用闭包的方法)-->

        <body>

          <a href='#'> 第一个链接 </a> </br>

          <a href='#'> 第二个链接 </a> </br>

          <a href='#'> 第三个链接 </a> </br>

          <a href='#'> 第四个链接 </a> </br>

          <script type="text/javascript">

            var lis = document.links;

            for(var i = 0, length = lis.length; i < length; i++) {

              (function(i) {

                lis[i].onclick = function() {

                  alert(i + 1);

                };

              })(i);

            }

          </script>

        </body>

    alert(a);
    var a = 200;
    alert(a);

    相当于

    var a;
    alert(a);
    a = 200;
    alert(a);

     1.第一步:分析参数
    2.第二步:分析变量声明
    3.第三步:分析函数声明

    再具体拆分步骤如下:
    0.函数运行前,生成Active Object(活动对象),该对象就是一个容器,里面放所有的变量以及对应的值
    1.把声明的参数放到AO里面,值全部为undefined,之后接收实参(就是外面传过来的)形成AO的属性,参数的值就是属性的值
    2.分析变量声明,对于带有var的变量,
            如果AO上没有此属性,则添加此属性,值是undefined
            如果AO上已经有此属性,则没影响
           
    3.分析函数声明,如function foo(){}
      则把函数赋给AO.foo属性,如果此前该属性已经存在,则覆盖
      注意:函数也可以直接被赋值,在JS里面,一切皆对象,函数也可以作为对象来传递。

    给字符串加千分符

    var str = '12345432';//->[]
             function spli(str){
                var iNum = str.length%3;//->0,1,2
                var prev = '';
                var arr = [];
                var iNow = 0;
                var tmp = '';
                //千分号是从后向前三位三位加的,所以把三位余出来的从前面提取到
                if(iNum !=0){
                    prev = str.substring(0,iNum);
                    arr.push(prev);
                }
                //取到多余部分后面的
                str = str.substring(iNum);
                for(var i=0;i<str.length;i++){
                    iNow++;
                    tmp += str[i];
                    if(iNow==3 && tmp){
                        //数组里面放的是三位的数
                        arr.push(tmp);
                        tmp = '';
                        iNow = 0;
                    }
                }
                return arr.join(',');
             }
             console.log(spli(str));

    当使用者按下”Delete”按钮时, 将所按到的行(tr)删除, 请使用原生JavaScript实现。

    var table = document.getElementById('table1');
    table.addEventListener('click', function(event){
    var tr = event.target.parentNode.parentNode;
    tr.parentNode.removeChild(tr);
    });

    event.target 属性返回哪个 DOM 元素触发了事件。

    这对比较 event.target 和 this 是非常有用的,以便判断事件是否因事件冒泡被处理。

    4.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)

  • 相关阅读:
    Mac电脑上的软件以及作用整理
    sed命令在mac和linux下的区别
    gin框架开启web跨域
    Mac下输入特殊字符的总结
    4月4悼念日 多数app 或者网站变成灰色的实现效果
    Mqtt 客户端多主题订阅
    paho.mqtt.golang--option.go 源码解析
    MQTT服务器(Broker)
    asdine/storm学习笔记
    vuex基本使用教程
  • 原文地址:https://www.cnblogs.com/cindy-hmy/p/5969076.html
Copyright © 2020-2023  润新知