通用编程题

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怎么做?(不使用第三方框架)

posted @ 2016-10-17 11:18  cindy—hmy  阅读(281)  评论(0编辑  收藏  举报