前端工程师
刚做完个小项目,正准备喘口气,产品说要添加个演示模式。
问:何为演示模式?
答:不用登录,项目仍可用,但产生的数据不上传。
问:怎么启动演示模式开关?
答:顺时针点击四角固定次数后开启。
了解需求后,心想这个简单,不就是个作弊模式嘛,一会儿就搞定。
但实现的过程中想到了一些事情,,并最后有了本篇文章。
方便说明,示意图如下:
其中1到4表示相应的四个区域。html脚本示意如下:<divdata-index="1"class="tap-area">1</div><divdata-index="2"class="tap-area">2</div><divdata-index="3"class="tap-area">3</div><divdata-index="4"class="tap-area">4</div>
最开始的脚本代码是:document.querySelectorAll('.tap-area').forEach(v=>v.onclick=handleClick)letarray=[]lettotal=8functionhandleClick(){array.push(this.dataset.index)if(array.length>total){array.shift()}console.log(array)if(check(array)){console.log('进入演示模式')array=[]}}functioncheck(array){if(array.length<total)returnfalsereturn'12341234'===array.join('')}
上面的代码很简单,为四个角添加事件,每次点击时把其代表的数字放进array数组中。并且都check数组是否已满足开启条件。
其核心是check的实现,我最开始想到的点击顺序是:用户从右上角顺时针点击两圈就可以了,即12341234就能满足需求了。
如果没有其他的想法,事情也就到此为止了。
后来想了一想,不管起点是啥,只要是顺时针即可,我该如何实现?也觉得这样比较合理一些。