关于HarmonyOS的学习

day21

一、window对象常用方法

复制代码
    // 提示信息,带有确认和取消。如果确认返回的是true,取消返回的是false
    // var res = confirm('你确定登录吗?')
    // console.log(res)
​
    var btn1 = document.querySelectorAll('button')[0]
    var btn2 = document.querySelectorAll('button')[1]
    btn1.onclick = function(){
        // 关闭浏览器窗口
        window.close()
    }
    btn2.onclick = function(){
        // 打开浏览器窗口
        // 参数1表示的是跳转到那个网页
        // 参数2表示是否新窗口打开 _self _blank(如果不写,默认新窗口)
        // 参数3表示的窗口的样式(存在兼容问题,有些浏览器不起作用)
        // window.open('https://www.jd.com')
        // window.open('https://www.jd.com', '_self')
        window.open('https://www.jd.com', '_blank', 'width=500; height=500;')
    }

二 、location地址栏对象

复制代码
    // 返回的是主机名称
    // console.log(location.hostname)
​
    // 获取地址栏中完整的地址 作用:1、设置 2、获取 (常用)
    console.log(location.href)
​
    // 文件路径及文件名
    console.log(location.pathname)
​
    // 完整的url组成:协议protocol、域名domain、端口号port
​
    var btn1 = document.querySelectorAll('button')[0]
    var btn2 = document.querySelectorAll('button')[1]
​
    btn1.onclick = function(){
        location.reload()
    }
    // 所谓的强制刷新,不走缓存,直接重新向服务器获取数据
    btn2.onclick = function(){
        location.reload(true)
    }

三、window下的几个对象

1.history对象 history.forward(前进)

2.screen对象 screen.width screen.height

不包含状态栏 screen.availWidth screen.availHeight

四、onscroll滚动事件

复制代码
    // onscroll 滚动事件,当滑动浏览器的滚动条的时候触发事件
    // scrollTop 获取滚动的距离
    // document.documentElement.scrollTop 当文档没有声明的时候,不起作用
    // document.body.scrollTop 当文档没有声明的时候,起作用
    // document.documentElement.scrollLeft当文档没有声明的时候,不起作用
    // document.body.scrollLeft 当文档没有声明的时候,起作用
​
    var aside = document.querySelector('aside')
    window.onscroll = function(){
        // var scrollTop = document.documentElement.scrollTop
        // var scrollTop = document.body.scrollTop
        // 兼容写法 短路运算符
        // var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
        // console.log(scrollTop)
​
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
        if(scrollTop>=300){
            aside.style.opacity = 1
        }else{
            aside.style.opacity = 0
        }
    }

五、class Name和classList

1.className 能通过js形式给标记添加类名 var btn = document.querySelector('button') var box = document.querySelector('div')

复制代码
    // var flag = true
    // btn.onclick = function(){
    //     if(flag){
    //         // 问题:style方式确实方便,如果设置的样式较多的情况下,就特别麻烦了
    //         // box.style.display = 'block'
    //         // box.style.backgroundColor = 'yellowgreen'
    //         // box.style.border = '1px solid black'
    //         box.className = 'show'
    //         flag = false
    //     }else{
    //         // box.style.display = 'none'
    //         box.className = ''
    //         flag = true
    //     }
    // }
    btn.onclick = function(){
       box.classList.toggle('show')
    }

2.classList 是一个对象上面有几个方法 add() remove() toggle()如果有类名就删除,没有将添加。 注意点1:className形式一次只能设置一个类名,如果设置多个,下面的会把上面的给覆盖掉 注意点2:box.className = 'sy1 sy2'可以添加两个类名,但是删除类名时会全面删除

六、吸顶效果

复制代码
    var nav = document.querySelector('nav')
    window.onscroll = function(){
        // 获取滚动的距离
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
        if(scrollTop>=200){
            nav.classList.add('fxd')
        }else{
            nav.classList.remove('fxd')
        }
    }

七、onresize

复制代码
    // onresize 窗口事件,当浏览器的窗口改变时触发
    // innerWidth 可以获取浏览器的可视区域的宽度
    // innerHeight 可以获取浏览器的可视区域的高度
    window.onresize = function(){
        // console.log(window.innerWidth, window.innerHeight)
        if(window.innerWidth<=320){
            document.documentElement.style.fontSize = '32px'
        }else if(window.innerWidth<=640){
            document.documentElement.style.fontSize = '64px'
        }else if(window.innerWidth<=750){
            document.documentElement.style.fontSize = '75px'
        }
    }

八、回调函数

复制代码
        + callback(cb)
        + 官方概念:
          => 如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指的函数时,我们就说这是回调函数
        + 理解概念:
          => 把函数当做参数给另一个函数使用,当当前的函数执行完毕后,再执行作为参数的这个函数,把这种情况称之为回调函数
        + 作用
          => 可以处理异步操作
          => 可以延迟执行
          => 可以解决代码阻塞问题
          => 可以把复杂的逻辑进行分类
          => ...

1.回调函数的第一种语法:将匿名函数当成参数传递 fn是主体函数 a参数就是回调函数 function fn(a){ console.log('我是主体函数') a() } fn(function(){ console.log('hello') })

2.回调函数的第二种语法:把有名称的函数当成参数传递 function fn(a){ a() console.log('我是主体函数') } fn(fn2) function fn2(){ setTimeout(function(){ console.log('hello') }, 2000) }

3.异步代码 // setInterval 主体函数 // 需求:希望1秒或者2秒后处理逻辑代码,如果不传递一个函数作为参数,其他的数据类型做不到 // 1秒定时器去调用回调函数 setInterval(function(){ console.log('逻辑代码') }, 1000)

复制代码
    function fn(){
        console.log('逻辑代码')
    }
    setInterval(fn, 1000)
​
    function fn(a){      
        console.log('我是主体函数')
        a()
    }
    fn(fn2)
​
    function fn2(){
        // setTimeout(function(){
        //     console.log('hello')
        // }, 2000)
​
        for(var i=0; i<1000; i++){
            console.log(i)
        }
    }

4.开发场景及使用 开发场景:网络请求,你前端向服务器发送请求信息,服务器会把你需要的请求的数据返回 回调函数的使用: // arr.forEach(function(){}) // arr.sort(function(a, b){return a - b})

复制代码
    var arr = [10, 20, 30]
    // 把处理逻辑的代码单独放在回调函数里面
    function callback(item){
        return item>=20
    }
    // 主体函数
    var res = arr.filter(callback)
    console.log(res)

九、锚点

复制代码
    + 锚点其实也是超链接的一种形式
    + 命名锚点的作用:
      => 在同一页面内的不同位置进行跳转
    + 语法
      => <a href="#pic1">描述文字</a> 点击可以跳转的标记
      => <标记 id="pic1">目标内容</标记> 跳转目标标记
相关推荐
科技探秘人4 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人4 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR10 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香12 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q24985969315 分钟前
前端预览word、excel、ppt
前端·word·excel
数据与后端架构提升之路17 分钟前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
小华同学ai20 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
problc24 分钟前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
一行126 分钟前
电脑蓝屏debug学习
学习·电脑
Gavin_91529 分钟前
【JavaScript】模块化开发
前端·javascript·vue.js