WEB API 三

// 1.删除节点

    // 语法:父节点.removeChild(删除的节点)

    // var ul = document.querySelector('ul')

    // ul.removeChild(ul.children[0])

    // 2.复制节点

    // 语法:节点.cloneNode(true)//深拷贝  节点.cloneNode(false)、节点.cloneNode() //浅拷贝

    // 区别:深拷贝会复制当前节点及所有子节点,浅拷贝只会复制当前节点

    // var lili =  ul.children[0].cloneNode(true)

    // ul.appendChild(lili)

    // 注意点:不要在for循环里面使用innerHTML

    // 事件监听:

    // 语法:事件源.addEventListener('事件类型(不带on)',处理程序)

    // ul.children[0].addEventListener('click',fn)

    // function fn(){

    //     alert(11)

    // }

    // 注意:他和传统注册事件的区别是他可以给同一个元素注册多个事件,传统注册事件如果给同一元素绑定多个事件会出现层叠

    // 移除事件(解绑事件,删除事件)

    // 语法:事件源.removeEventListener('事件类型',要解绑的事件)

    // ul.children[0].removeEventListener('click',fn)

    // DOM流:分为 捕获-当前-冒泡 3个阶段

    // addEventListener(参数1,参数2,参数3)

    // 如果参数3为true,代表给元素绑定了捕获事件

    // 如果参数3为false或者不写,代表给元素绑定了冒泡事件

    // 我们实际开发更关注的是冒泡事件

    // 事件对象:事件在发生时候的一些列数据的集合

    // 只要发生了事件就一定有事件对象,事件对象是系统帮我们创建的,我们只需要使用就行

    // 使用步骤:1.先定义一个形参。2.使用形参

    // ul.children[0].addEventListener('click', fn)

    // function fn(e) {

    //     console.log(e);

    // e.target代表的是当前触发事件的对象

    // this是当前绑定事件的对象

    // alert(11)

    // }

    // var a = document.querySelector('a')

    // a.οnclick=function(e){

    //     a.style.color='red'

    //     // 阻止默认行为

    //     e.preventDefault()

    //     return false   //只能在传统事件中使用

    // }

    // ul.addEventListener('click', function (e) {

    //     // 事件委托:不给子元素单独绑定事件,而是把事件绑定到父元素上,然后通过冒泡来实现每一个子元素的事件

    //     e.target.style.backgroundColor='red'

    // })

    // var lis = document.querySelectorAll('li')

    // for (var i = 0; i < lis.length; i++) {

    //     lis[i].addEventListener('click', function (e) {

    //         // 阻止事件冒泡

    //         e.stopPropagation()

    //     })

    // }

    // 了解:

    // 禁止选中

    // document.addEventListener('selectStart',function(e){ e.preventDefault() }

    // 禁止右键菜单

    // document.addEventListener('contextmenu',function(e){ e.preventDefault() )

    // 核心原理:绑定事件,阻止默认行为

// 2种事件绑定方式
    var div = document.querySelector('div')
    // 第一种是传统方式 事件源.事件类型=处理程序  eg:div.onclick=function(){console.log(1)}
    // 第二种是事件监听 事件源.addEventListener('事件类型','处理程序','是否为捕获阶段发生(可选参数,默认是false)')
    // eg:给div绑定点击事件,注意,事件类型没有on了
    // div.addEventListener('click',function(){
    //     console.log(1);
    // })
    // div.addEventListener('click',function(){
    //     console.log(2);
    // })
    // 最终会打印1,2
    // 区别传统方式:可以绑定多个事件,每次触发事件的时候都会将绑定的事件执行一次
    // 2中事件解绑方式
    // 第一种是传统方式:只需要将事件赋值成null  eg:  div.onclick= null  这就代表点击的时候什么都不做,也就是取消
    // 第二种是事件监听:事件源.removeEventListener('事件类型','函数名')
    // 注意,要想给监听事件解绑,绑定的事件必须是通过命名函数绑定的
    // start---------------------->
    // 举个命名函数绑定的例子,注意函数不要调用,eg:
    // div.addEventListener('click',fn)
    // function fn(){
    //     console.log(1);
    // }
    // 以上代码可以通过预解析来理解:
    // function fn(){
    //     console.log(1);
    // }
    // // 就等价于
    // var fn = function(){
    //     console.log(1);
    // }
    // 并且提升到代码最前面执行
    // div.addEventListener('click',fn)
    // 所以fn  就是 function() {
    //     console.log(1);
    // }
    // 就相当于把fn替换成了匿名函数
    // 解绑方式,eg:
    // div.removeEventListener('click',fn)
    // end---------------------->
    // DOM事件流:分为3个步骤
    // 1.捕获阶段
    // 解释:当事件触发的时候,事件会从文档开始向被触发事件的元素逐级向下查找事件,这个过程叫做捕获
    // 2.当前阶段
    // 解释:事件触发的元素被查找到的阶段,就是当前阶段
    // 3.冒泡阶段
    // 解释:当事件经历了捕获,和当前阶段,还会从内往外的查找一次,这样的过程叫做冒泡
    // 验证:
    // son.addEventListener('click',function(){
    //     console.log('我是son冒泡');
    // })
    // son.addEventListener('click',function(){
    //     console.log('我是son捕获');
    // },true)
    // father.addEventListener('click',function(){
    //     console.log('我是father冒泡');
    // })
    // father.addEventListener('click',function(){
    //     console.log('我是father捕获');
    // },true)
    // 执行顺序应该是先打印1.我是father捕获2.我是son捕获3.我是son冒泡4.我是father冒泡
    // 事件对象
    // 事件只要发生,系统就会帮我们产生一个事件对象,我们只要使用就行了
    // 用法:在处理程序的函数中,接收一个形参来使用,默认命名为event,e。eg:
    // div.onclick=function(e){
    //     console.log(e);//e就是事件对象
    // }
    // 阻止默认行为:e.preventDefault()
    // 能阻止a标签跳转,form表单提交等系统默认行为,但是不会阻止后面的代码运行,比如阻止跳转了还可以改a标签的颜色
    // 阻止冒泡: e.stopPropagation()
    // 能防止事件向父元素扩散,比如我只想点击son,不想触发father的绑定事件
    // 事件委托:就是不用循环绑定事件了,给父元素委托事件,通过冒泡来实现效果
    // 优点:更少的操作DOM,可以提升效率
    // ul>li*4 :以前要给li绑定事件是通过循环,这里只需要绑定到ul就行
    // 通过e.target可以找到事件触发的对象
    // 通过this可以找到事件绑定的对象
    // 鼠标移动事件:onmousemove
    // 鼠标移动时会触发,频率比较高,移动1PX都会触发
    // 鼠标移动过程中,也会有事件对象,我们通常使用以下属性
    // document.addEventListener('mousemove',function(e){
    // 这三个位置都是数字类型的
    //     // 距离浏览器的位置
    //     e.clientX
    //     e.clientY
    //     // 距离页面的位置(使用频率最高)
    //     e.pageX
    //     e.pageY
    //     // 距离显示器(屏幕)的位置
    //     e.screenX
    //     e.screenY
    // })
    // 跟随鼠标的天使:
    // 思路:就是给document绑定鼠标移动事件,然后移动的过程中,将鼠标的位置赋值给图片就可以了
    // 坑点:1一定要给图片给定位2.记得位置加px
    // 因为图片是从左上角开始,没有居中,所以还得减去图片的宽高各一半,来实现让鼠标在图片上居中
    // 键盘事件:
    // 有三类事件1.键盘按下 keydown  2.键盘按下 keypress   3.键盘抬起  keyup 
    // 区别:1.keypress不认识功能键    2.keypress认识大小写
    // 键盘事件对象:当按下键盘的时候也会产生事件对象,我们通常用事件对象中的keyCode属性
    // keyCode属性会返回对应案件的ASCII码,我们要想判断按键的话,可以先打印一下keyCode,在用这个值判断
    // start---------------------------->
    // 模拟京东快递单案例
    // 要素:1.div展示放大的单号2.输入框,用来输入内容
    // 思路:
    // 1.输入内容的时候,让div进行展示
    // 2.清空内容的时候,让div进行隐藏
    // 3.输入框失去焦点的时候,让div进行隐藏
    // 4.输入框获取焦点的时候,判断一下输入框是否有内容,有就展示
    // 代码:
    // 1.var con =  document.querySelector('div')
    // 2.var inp =  document.querySelector('input')
    // 3.给输入框绑定键盘事件
    // input.onkeyup=function(){
    // 4.如果没有值就隐藏
    // if(this.value ===''){
    //  con.style.display = 'none';
    // }
    // 5.如果有值就展示并且赋值
    // else{
    //  con.style.display = 'block';
    //  con.innerHTML=this.value
    // }
    // }   
    // 6.输入框绑定失去焦点事件 
    // inp.addEventListener('blur',function(){
    //     con.style.display='none'
    // })
    // // 7.输入框绑定聚焦事件 
    // inp.addEventListener('focus',function(){
    //     // 8.判断一下输入框是否有内容
    //     if(this.value.length!=""){
    //         con.style.display='block'
    //     }
    // })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值