面试中遇到的几个问题
使用原生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 | //递归调用 |