js
- js只有声明的变量会提升,初始化不会提升
var x; //声明 var y = 4; //初始化
- onmouseover鼠标移入显示的闪烁问题
问题原因
显示层遮住了添加事件的元素,所以反复执行 onmouseover onmouseout。
解决办法
给显示层添加样式: pointer-events: none;mdn上关于这个属性的解释是:
pointer-events CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target
意思就是添加了这个属性的元素在什么情况下可以成为鼠标事件的 target
除了指示该元素不是鼠标事件的目标之外,值none表示鼠标事件“穿透”该元素并且指定该元素“下面”的任何东西。
当元素的 pointer-events 属性取值为 none 的时候,表示该元素不是鼠标事件的目标元素,并且鼠标事件穿透该元素指定它下面的元素。
pointer-events: none;
- HTMLSelectElement.checkValidity() 会检查元素是否有任何输入约束条件,并且检查值是否符合约束条件。 如果值是不符合约束条件的,浏览器就会在该元素上触发一个可以撤销的 invalid 事件。
function myFunction() { var x = document.getElementById("nu"); x.setCustomValidity("");//使用前先取消自定义,否则下次点击checkValidity总返false if (x.checkValidity() == false) { x.setCustomValidity("错误"); document.getElementById("demo").innerHTML = x.validationMessage; } else { x.setCustomValidity("正确"); document.getElementById("demo").innerHTML = x.validationMessage; } }
- ES6
// ES5 var x = function(x, y) { return x * y; } // ES6(箭头函数不可提升,需先定义,建议使用const,函数表达式始终是个常量) const x = (x, y) => x * y;
- 兼容
/* * 参数: * obj:要绑定事件的对象 * eventStr:事件(注意:这里不要on) * callback:回调函数 */ function bind(obj , eventStr , callback){ if(obj.addEventListener){ //大部分浏览器 obj.addEventListener(eventStr , callback , false); }else{ //IE8及以下 obj.attachEvent("on"+eventStr , function(){ //在匿名函数中调用回调函数 callback.call(obj); }); } }
- 浏览器窗口的宽高,兼容写法
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;