js

  • js只有声明的变量会提升,初始化不会提升
        var x;     //声明           var y = 4;      //初始化


  • onmouseover鼠标移入显示的闪烁问题
        onmouseover 时需要显示一个层,onmouseout 时隐藏这个层。当鼠标移入的时候显示层不断闪烁。
    问题原因

        显示层遮住了添加事件的元素,所以反复执行 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;


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务