前言
最近在做一个mini项目,被大神各种鄙视,基础知识确实是不扎实,加油加油。好了,不多废话,抽空写写遇到的两个知识点,就记录下来,写博客还是能帮忙整理记录的,不然过了就忘记了。
input监听值改变事件
1.onchange事件
开始使用的就是该事件,这个事件可以监听到input标签里面的值改变,但是有一个必须是当前元素失去了焦点(onblur)时才可以激活这个事件,所以有的时候体验很不好,如我的需求是input标签值不为空的时候,我的checkbox标签就可以点击了,这时就必须是在input外面点击一下触发该事件,然后才能去点击我的checkbox标签。体验很不好,所以放弃该事件。
2.oninput和onpropertychange事件
这两个事件就可以满足我们的需求了,input值改变时实时的触发该事件,onpropertychange是IE下的方法。
判断数组为空
如下代码所示:
var arr = new Array(); //输出为it is true if(arr){ console.log("it is true"); } //输出为it is false if(arr == true){ console.log("it is true") }else{ console.log("it is false"); } Boolean(arr); //true Number(arr); //0 Number(false); //0 Number(true); //1
看到这个结果是不是明白了。在new Array()一个空数组时,是一个Object对象,所以if(arr)时是true。
在进行数组直接与true和false的布尔类型比较时,默认是将数组和布尔类型都转化为了Number类型进行比较,空数组转化为Number类型时为0。
所以我们可以通过arr == true来判断数组不为空,或者我想到的另一个也可以通过arr.length !== 0来判断数组不为空。这两个方法哪种好尼?我也不是说不出来,或者有没有其他大神有更好的方法,敬请赐教啊!