JavaScript必学知识点

一、定时器

1. 间歇函数

        每隔一段时间调用这个函数

    <script>
        function repeat() {
            document.write('出卖你的爱~')
        }
        // 开启定时器(函数,间隔时间)
        let timer = setInterval(repeat, 1000) //Attention:①1000=1s ②函数不需要加括号
        // 关闭定时器
        clearInterval(timer)
    </script>
2. 延时函数

        与间歇函数的区别:仅执行一次,等待1000毫秒后执行一次函数

    <script>
        // 开启延时定时器
        let timer2 = setTimeout(repeat, 1000) 
        clearTimeout(timer2)
    </script>

二、事件监听

1. 语法

 三要素:

  • 事件源:获取被触发的dom元素;
  • 事件类型:触发方式(比如click点击事件/mouseover鼠标经过事件)
  • 事件函数:触发了做什么事
        // 获取元素
        const a = document.querySelector('a')
        // 添加事件监听:点击a链接后输出文字
        a.addEventListener('click', function(){
            document.write('是郎给的诱惑~')
        })
2. 事件类型
  • 鼠标事件:click、mouseover、mouseleave
  • 焦点事件:focus(点击框框获得焦点)、blur(失去焦点)
  • 键盘事件:Keydown(按下键盘任意键触发)、Keyup(抬起键盘任意键触发)
  • 文本事件:input(用户输入事件)
3. 事件对象e

        事件发生后,跟事件有关的一系列信息数据的集合都放到整个对象里面,这个对象就是事件对象event,它有很多属性和方法。

        3.1 语法
        // 事件对象e
        const input = document.querySelector('input')
        // 点击输入框后按下键盘,打印出用户按下的键盘的值
        input.addEventListener('keyup', function(e){
            console.log(e.key);
        })
        3.2 部分常用属性
  •         e.key:用户按下的键盘的值
  •         e.type:获取当前事件类型
  •         e.clientX/clientY:获取光标相对于浏览器可见窗口左上角的位置
  •         e.offsetX/offsetY:获取光标相对于当前DOM元素左上角的位置
4. 环境对象this

        需要弄清楚 this 的指向:谁调用,thisjiushish

<body>
    <button>点击</button>
    <script>
        const btn = document.querySelector(`button`)
        btn.addEventListener('click' , function() {
            console.log(this)  // btn对象
            // 平常写法
            //btn.style.color = 'red'
            //使用 this 的写法
            this.style.color = 'red'
        })
    </script>
</body>

三、事件流

事件流指的是事件完整执行过程中的流动路径。

1. 捕获

        从DOM的根元素开始去执行对应的事件(从父到子)

        语法:DOM.addEventListener(事件类型,事件处理函数,true)

2. 冒泡

        实际工作以此为主,默认也为false

        语法:DOM.addEventListener(事件类型,事件处理函数,false)

       扩展:阻止行为

        阻止冒泡: 元素.stopPropagation()

        阻止元素默认行为:e.preventDefault()

3. 事件解绑
        3.1 on事件

        btn.onclick = null

        3.2 addEventListener事件

        btn.removeEventListener('click', fn)

4. 事件委托

        一种减少注册次数,可以提高程序性能的方法。给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素身上,从而触发父元素的事件。

<body>
  <ul>
    <li>第1个孩子</li>
    <li>第2个孩子</li>
    <li>第3个孩子</li>
    <p>不改变</p>
  </ul>
  <script>
    // 点击每个小li 当前li 文字变为红色
    const ul = document.querySelector('ul')
    ul.addEventListener('click', function (e) {
      // console.dir(e.target) // e.target就是我们点击的那个对象
      // e.target.style.color = 'red'   //li和p都变颜色
      // 只要点击li才会变色
      if (e.target.tagName === 'LI') {
        e.target.style.color = 'red'
      }
    })
  </script>
</body>
5. 其他事件
        5.1 页面加载事件:load

        等待页面所有资源加载完毕再执行其中的代码(写在</head>之前)

    <script>
    // 页面加载事件
    window.addEventListener('load', function(){
        document.write('hello')
    })
    // 等待图片加载完毕再执行里面的代码
    img.addEventListener('load',function(){
        document.write('hello')
    })
    // 等不及了!现在要“无需等待样式表,也不等图片完全加载,先实现HTML的交互效果”
    document.addEventListener('DOMContentLoaded', function(){
        document.write('hello') //需要执行的操作
    })
</script>
</head>
        5.2 元素滚动事件:scroll

        滚动条在滚动的时候持续触发的事件,比如很多网页需要检测用户把页面滚动到某个区域后做一些处理(固定导航栏、返回顶部)。

    <script>
        // 页面滚动
        window.addEventListener('scroll', function(){
            window.scrollTo(10, 20) // 规定滚动到指定坐标
            console.log(document.documentElement.scrollTop); // 想知道页面到底滚动了多少像素           
        })
        // 元素滚动
        const div = document.querySelector('div')
        div.addEventListener('scroll', function(){
            console.log(this.scrollTop); // 滚动后距离上边的距离
            console.log(this.scrollLeft); // 滚动后距离左边的距离
        })        
    </script>
        5.3 页面尺寸事件:resize

        会在窗口尺寸改变时触发事件

        // 页面尺寸改变时
        window.addEventListener('resize',function(){
            let w = document.documentElement.clientWidth //检测屏幕宽度
            let h = document.documentElement.clientHeight //检测屏幕高度
            console.log(w);
        })

四、日期对象

1. 实例化及日期对象方法
    <div class="year">年份</div>
    <div class="month">月份</div>
    <script>
        const year1 = document.querySelector('.year')
        const year2 = document.querySelector('.month')
        // 实例化
        const date1 = new Date() //获取当前时间
        const date2 = new Date('2024-05-01') //获取指定时间

        // 日期对象不能直接使用,需要转换格式
        year1.innerHTML = date1.getFullYear() //获取4位年份
        // 获取月份0~11:getMonth()
        // 获取日子(每个月份日子范围不同):getDate()
        // 获取星期0~6:getDay()
        // 获取小时0~23:getHours()
        // 获取分钟0~59:getMinutes()
        // 获取秒0~59:getSeconds()

        // 把日期转化为字符串
        year2.innerHTML = date2.toLocaleString()
     
    </script>
2. 时间戳

        指的是从1970.1.1开始至今的毫秒数,用于计算倒计时,因为时间无法进行加减。

        // 时间戳
        console.log(date1.getTime());  //得到date1的时间戳
        console.log(+new Date()); //简写得到此刻的时间戳
        console.log(Date.now()); //无需实例化,只能得到此刻的时间戳

五、正则表达式

1. 作用

        用于匹配字符串中字符组合的模式,例如表单验证中进行匹配、过滤敏感词等

2. 语法
        // 定义规则语法
        const a = /^[a-z]$/
        // 查找是否匹配
        a.test('被检测的字符串')
        // 查找符合规则的字符串
        a.exec(一个数组)
        // 举例
        console.log(/[abc]/.test('andy'));
3. 元字符
  •         边界符:^表示以谁开始,$表示以谁结束,如何两个一起用表示精确匹配
  •         量词:比如*表示重复0次或更多次
  •         字符类:比如\d表示0~9
4. 修饰符
        // i是ignore的缩写,表示正确匹配不区分大小写
        console.log(/a/i.test('A')); //true
        // g是global的缩写,表示全局多次匹配
        const str = '你好cute,你怎么这么cute'
        const a = str.replace(/cute/ig, 'ugly')
        console.log(a);

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值