使用原生js在不添加属性的前提下给li添加click事件,返回当前li的index值
| 1 2 3 4 5 6 7 8 9
 | <ul id="list">   <li>111</li>   <li>222</li>   <li>333</li>   <li>444</li>   <li>555</li>   <li>666</li> </ul>
 | 
我当时想在不添加属性的情况下无法获取该li的index值,于是就想不起来解决办法了。
至于事件的话遍历所有li通过添加addEventListener和attachEvent添加。
也想过在li上直接绑定click事件即在li标签上添加onclick = "getIndex(this)"
但是这样不就相当于添加了属性了么?
后来看到别的网友的解决方案感觉蛮好的,方案如下
| 1 2 3 4 5 6 7 8 9 10 11 12
 | function 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();
 | 
我感觉还有更好的解决方法即事件代理,这个无法获取li元素的index值 只能添加属性(与题意不符了)
| 1 2 3 4 5 6 7 8 9 10
 | function bindClick() {   var ul = document.getElementById("list");   ul.onclick=function hello(event){      console.log(event.target.getAttribute("index"));   }   for(var i=0;i<ul.children.length;i++){       ul.children[i].setAttribute("index",i);   } } bindClick();
 | 
可以通过`array.map`方法获取到`index`值
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
 | function bindClick2() {   var ul = document.getElementById("list");               var lis = Array.prototype.slice.call(ul.children);   ul.onclick = function hello(event) {     lis.map(function(cur, index, array) {       if (cur == event.target) {         console.log(index);       }     });   }; } bindClick2();
 | 
至少使用两种方法写出每隔1秒输出0,1,2的函数(需包含es6的实现)
普通情况最简单,用setInterval函数即可.
| 1 2 3 4 5 6
 | var a=0; function add(){     console.log(a++); } var int = setInterval("add()",1000);
 | 
es6里我记得有个await和async我就胡乱写了下,回来查了下:
await表示紧跟在后面的表达式需要等待结果,await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。
await关键字只能出现在用async声明的函数体内
async函数返回一个 Promise 对象。async函数内部return语句返回的值,会成为then方法回调函数的参数。
| 1 2 3 4 5 6 7 8 9 10 11 12 13
 | var sleep = (time)=>{     return new Promise((reslove)=>{         setTimeout(reslove, time);     }) } async function test() {     for (let i = 0; i < 10; i++) {         await sleep(1000);         console.log(i);     } } test();
 | 
使用vue写个计时器
要求:左边input输入毫秒数,中间开始按钮可以开始和暂停,右边输入框显示倒计时的值
input button input
demo 如下:
See the Pen vue 计时器 by openks (@openks) on CodePen.
Fibonacci 数列算法及复杂度解析
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 | //递归调用 //空间复杂度O(n^2) //时间复杂度 function Fibonacci (n) {   if ( n <= 1 ) {return 1};   return Fibonacci(n - 1) + Fibonacci(n - 2); } Fibonacci(10) // 89 Fibonacci(100) // 堆栈溢出 Fibonacci(500) // 堆栈溢出 //尾递归优化过的 Fibonacci 数列实现如下 //时间复杂度 //空间复杂度 O(1) function Fibonacci2 (n , ac1 = 1 , ac2 = 1) {   if( n <= 1 ) {return ac2};   return Fibonacci2 (n - 1, ac2, ac1 + ac2); } Fibonacci2(100) // 573147844013817200000 Fibonacci2(1000) // 7.0330367711422765e+208 Fibonacci2(10000) // Infinity
 |