面试中遇到的几个问题
使用原生js在不添加属性的前提下给li添加click事件,返回当前li的index值
1  | <!--html结构如下-->  | 
我当时想在不添加属性的情况下无法获取该li的index值,于是就想不起来解决办法了。
至于事件的话遍历所有li通过添加addEventListener和attachEvent添加。
也想过在li上直接绑定click事件即在li标签上添加onclick = "getIndex(this)"
但是这样不就相当于添加了属性了么?
后来看到别的网友的解决方案感觉蛮好的,方案如下1
2
3
4
5
6
7
8
9
10
11
12function bindClick() {
  var ul = document.getElementById("list"), li;
  for (var i = 0; i < ul.children.length; i++) {
    li = ul.children[i];
    li.index = i;
    // 长时间不用居然忘记了还有这种写法
    li.onclick = function hello() {
      alert(this.index);
    };
  }
}
bindClick();
1  | function bindClick() {  | 
1  | function bindClick2() {  | 
至少使用两种方法写出每隔1秒输出0,1,2的函数(需包含es6的实现)
普通情况最简单,用setInterval函数即可.1
2
3
4
5
6var a=0;
function add(){
    console.log(a++);
}
var int = setInterval("add()",1000);
// clearInterval(int);
es6里我记得有个await和async我就胡乱写了下,回来查了下:await表示紧跟在后面的表达式需要等待结果,await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。await关键字只能出现在用async声明的函数体内async函数返回一个 Promise 对象。async函数内部return语句返回的值,会成为then方法回调函数的参数。
1  | var sleep = (time)=>{  | 
使用vue写个计时器
要求:左边input输入毫秒数,中间开始按钮可以开始和暂停,右边输入框显示倒计时的值
input button input
demo 如下:
See the Pen vue 计时器 by openks (@openks) on CodePen.
Fibonacci 数列算法及复杂度解析
1  | //递归调用  |