本文介绍: 一.节点增加(上条博客的补充点)二.滚动条事件(兼容性写法)5.浏览器的默认行为及阻止。1.三要素与三注意事项。2.事件对象的兼容获取。

一.节点增加(上条博客的补充点)

insertBefore

1.基本概念
	功能:按照指定位置添加元素,将目标元素添加至参照元素之前;
	参数:父元素.insertBefore(目标元素,参照元素)(必须是父元素的直接子元素,如果隔代就会报错,在表格中,tr 的父元素默认是 tbody 而不是 table2.案例
		html<input type="text"&gt;
	    <ul&gt;
	        <li&gt;凢凢</li&gt;
	        <li&gt;峰峰</li>
	        <li>伦伦</li>
	    </ul>
	    <button>添加</button>
	script:
	    var oText = document.querySelector("input");
	    var oBtn = document.querySelector("button");
	    var oUl = document.querySelector("ul");
	
	    oBtn.onclick = function(){
	        if(oText.value != ""){
	            var oLi = document.createElement("li");
	            oLi.innerHTML = oText.value;
	            oUl.insertBefore(oLi,oUl.children[1]);-------------------children的含义为返回父元素所有子节点,其意义也就相当于将父元素所有的子元素存储数组中,其调用方式也与数组相同,使用下标索引即可,且此处可设置函数的形参变量
	            oText.value = "";-------------------------------点击添加之后input框清空
	        }
	    }

二.滚动事件(兼容性写法)

滚动条事件:window.onscroll(与mousemove都是高频次事件)
滚动条的兼容写法:IE +IE
滚动条高度的读写:
    读:console.log(document.documentElement.scrollTop || document.body.scrollTop)
    写:document.documentElement.scrollTop = document.body.scrollTop = 0
案例style:
         body{
                height: 1000px;
            }
            #btn{
                position: absolute;
                top:1000px;
            }
    html:
        <button id="btn">返回顶端</button>
    script:
        window.onscroll = function(){
            console.log(document.documentElement.scrollTop || document.body.scrollTop);------------------获取滚动条高度的兼容写法【读】
        }
        var oBtn = document.querySelector("#btn");
        oBtn.onclick = function(){
            document.documentElement.scrollTop = document.body.scrollTop = 0;----------------赋值滚动条高度的兼容写法【写】
        }

三.事件
1.三要素与三注意事项

	事件三要素:
	  1)事件元素:触发事件的元素
	  2)事件类型:触发事件的动作
	  3)事件对象:携带着相关事件的属性方法,如果需要使用这些属性方法创建事件对象,反之不需要
	注意事项:
	  1)事件对象非必须()
	  2)事件对象的产生必须有事件
	  3)事件对象只有鼠标事件对象和键盘事件对象

2.事件对象的兼容获取

事件对象的兼容获取:
    var e = evt || event;
    console.log(e);
案例:    
    document.onclick = function(evt){-------------此处event作为类似形参的对象,放在侦听函数的括号里面,当事件发生时,系统由此传参给函数体,event也可以自主命名,比如evt,e等(事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数)
        var e = evt || event;------------------------事件对象的兼容获取
        console.log(e);
    }
    
    document.onkeydown = function(){
            console.log(event);
    }    

3.鼠标事件对象

三类坐标:
    1.page:针对页面的左顶点 常用
    2.client:针对可视窗口 不常用
    3.offset针对于父元素的左顶点 常用于拖拽


案例1:
    document.onclick = function(evt){
        var e = evt || event;--------------------事件对象兼容性写法;
        console.log("page " + e.pageX + "," +e.pageY);----------page坐标,针对页面的左顶点
        
        console.log("client " + e.clientX + "," +e.clientY);-----------client坐标,针对可视窗口

        console.log("offset " + e.offsetX + "," +e.offsetY);---------offset坐标,针对于父元素的左顶点
    }


案例2:
    目标:实现页面内元素div跟随鼠标移动
    明确事件要素:
         大白板
         onmousemove
         事件对象----------使元素div位置和鼠标保持一致
    元素要在页面移动的核心思想:
        1.本质就是改变dom元素的left和top
        2.dom元素一定要设置position: absolute;
    代码:
    style:
         #box{
            width: 100px;
            height: 100px;
            background-color: hotpink;
            position: absolute;
            left:200px;
            top:300px;
            cursor: move;
        }
    html<div id="box"></div>
    script:
        var oBox = document.querySelector("#box");

    document.onmousemove = function(evt){
        var e = evt || event;
        oBox.style.left = e.pageX - oBox.offsetWidth/2 + "px";-----------获取width数据使用offsetWidth写法,直接获取数值,可用于计算。此处用鼠标在页面的坐标减去元素div一半的宽高赋值给元素div,是因为鼠标默认会在元素div左上角,我们希望将元素分别向上和向左平移宽高的一半,以便于鼠标位置在元素div中心点。
        oBox.style.top = e.pageY - oBox.offsetHeight/2 + "px";
    } 

4.事件流

1)概念与注意事项
	事件流:父元素和子元素同时绑定相同事件时,会造成事件流的传递,当事件被触发时,事件流会由子到父或由父到子进行传递
	  1>冒泡:子->父 (默认)
	  2>捕获:父->子 (今天不讲)
	 注意事项:不是所有的事件都具备事件流冒泡效果,比如 onfocus(聚焦),onblur(失焦),onload(延迟)
2)阻止事件冒泡
	阻止子元素事件触发时波及添加了相同类型事件的父元素
	写法:
    1.阻止事件的冒泡(一般写法)
        e.stopPropagation();
        e.cancelBubble = true;

    2.兼容性阻止事件冒泡
        if(e.stopPropagation){-------------这里写的是一个函数对象,不是函数的调用,作用是检测该函数是否存在,存在则返回true,不存在返回false
            e.stopPropagation();
        }else{
            e.cancelBubble = true;
        }
        
     3.三目运算写法:e.stopPropagation?e.stopPropagation():e.cancelBubble = true;

	案例:
		需求:点击按钮列表出现,点击大白板列表消失
		
		style:
		     ul{
		            display: none;
		        }
		html<button>显示</button>
		    <ul>
		        <li>王思聪</li>
		        <li>李易峰</li>
		        <li>凢凢</li>
		    </ul>
		script:
		    var oUl = document.querySelector("ul");
		    var oBtn = document.querySelector("button");
		
		    oBtn.onclick = function(evt){
		        oUl.style.display = "block";
		
		        var e = evt || event;
		
		        e.stopPropagation?e.stopPropagation():e.cancelBubble = true;
		    }
		
		    document.onclick = function(){
		        oUl.style.display = "none";
		    }

5.浏览器的默认行为及阻止

1)基本概念
	我们没有给浏览器添加事件,而在一定条件下浏览器自己触发的事件
	比如说:1.a 标签自动跳转 2。表单数据的提交 3页面文字选中
2)阻止浏览器的默认行为
	如何阻止浏览器的默认行为:
	事件对象.属性或者方法
	一般写法:
	    e.preventDefault();-----------------------阻止浏览器默认行为的非IE写法
	    e.returnValue = false; ----------IE
	兼容性写法:
	    e.preventDefault?e.preventDefault():e.returnValue=false;
	补充写法:
	    return false; 


	案例:
	    oA.onclick = function(evt){
	        console.log("李逵");
	
	        var e = evt || event;
	        
	        e.preventDefault?e.preventDefault():e.returnValue=false;return false;  
	    }
	 
	 
	案例:
	    鼠标右键点击oncontextmenu
	    document.oncontextmenu = function(){
	        console.log("嘿嘿");
	        return false;---------------------取消鼠标右键弹出设置菜单的默认行为;
	    }

原文地址:https://blog.csdn.net/weixin_69145757/article/details/132906848

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_1477.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注