• BOOM和DOOM操作


    BOM

    BOM操作指的是浏览器对象模型,它可以是JavaScript可以于浏览器进行对话,在JavaScript中与浏览器交互就是对window对象进行操作

    window对象

    window对象是客户端JavaScript最高层对象之一,由于window对象是其他大部分对象的共同的祖先,在调用window对象的方法和属性是,可以省略window对象的引用,也就是说window.document.write()可以简写成document.write()

    window对象常用的方法:

    方法 作用
    window.innerHeight 浏览器窗口内部的高度
    window.innerWidth 浏览器窗口内部的宽度
    window.open 打开窗口
    window.close 关闭窗口

    window的子对象

    判断用户使用的浏览器

    navigator.appName  // 得到用户使用的浏览器全程
    navigator.appVersion  // 得到用户使用浏览器的版本和厂商
    navigator.userAgent  // 浏览器的大部分信息
    navigator.platform  // 浏览器所在的操作系统
    

    screen对象

    屏幕对象

    screen.availWidth  // 获得屏幕可用的宽度
    screen.availHeight  // 获得屏幕可用的高度
    

    history

    就是操纵浏览器的前一页和后一页的按钮

    history.forward()  //前进一页
    history.back()  // 后退一页
    

    location对象

    可以用于获得当前页面的地址,并把浏览器重定向到新的页面

    location.href  // 获取当前页面的地址
    location.herf = '目标网页的url'  // 跳转到目标界面
    location.reload()  // 重新加载当前页面
    

    弹出框

    在JavaScript中有三种消息弹出框:

    1. 警告框

      用于确保用户可以得到某些信息,使用alert关键字

      alert('警告信息');
      
    2. 确认框

      用于使用户可以验证或接受某些信息,需要用户点击确认或者取消按钮才能继续操作,使用confirm关键字

      confirm('确认信息')
      
    3. 提示框

      用于提示用户在进入页面前输入某一个值,需要用户输入信息点击确认或者取消才能继续操作,使用prompt关键字

      prompt('提示信息')
      

    计时相关

    类似于python中的time.sleep,可以让代码在一定时间间隔之后来执行代码

    setTimeout

    var t = setTimeout('需要执行的语句',时间(毫秒))

    使用setTimeout方法会返回一个返回值,如果需要取消这个方法,可以使用这个变量名取消,其他情况基本不会去使用

    第一个参数是一个字符串,可以是需要执行的语句,也可以是调用一个函数,执行语句要加上引号,对函数的调用不要加引号

    第二个参数的单位是毫秒

    clearTimeout

    clearTimeout(接收setTimeout返回值的变量名)

    // 在指定时间之后执行一次相应函数
    var timer = setTimeout(function(){alert(123);}, 3000)
    // 取消setTimeout设置
    clearTimeout(timer);
    

    setInterval

    可以周期性的调用函数或者计算表达式,如果不被关闭就会一直被弹出,用法与setTimeout类似

    var t = setInterval("JS语句",时间间隔)

    clearInterval

    取消setInterval,用法与clearTimeout相似

    // 每隔一段时间就执行一次相应函数
    var timer = setInterval(function(){console.log(123);}, 3000)
    // 取消setInterval设置
    clearInterval(timer);
    

    DOM

    DOM操作指的是文档对象模型,它可以访问HTML文档的所有元素

    每当页面被加载时,浏览器会创建页面的文档对象模型

    HTML DOM树

    DOM标准规定HTML文档中的每个成分都是一个节点

    • 文档节点:document对象,代表整个文档
    • 元素节点:element对象,代表一个标签
    • 文本节点:text对象,代表标签中的文本
    • 属性节点:attribute对象,代表标签中的属性
    • 注释节点:comment对象

    JavaScript中可以通过DOM创建动态的界面,有如下一些作用

    • JavaScript能够改变也i面中所有的HTML元素
    • JavaScript能够改变页面中所有HTML元素
    • JavaScript能够改变页面所有的css样式
    • JavaScript能够对页面所有事件作出反应

    标签查找

    直接查找

    1. 根据id查找doucument.getElementById查找到的结果是是对象本身
    2. 根据class属性查找doucument.getElementByClassName查找到的结果是数组,通过索引取值得到对象本身
    3. 根据标签名查找document.gteElemenByTagName查找到的结果是数组,通过索引取值得到对象本身

    间接查找

    1. 父节点查找当前节点对象.parentElement
    2. 子节点查找当前节点对象.childrenElement
    3. 第一个子节点firstElementChild
    4. 最后一个子节点lastElementChild
    5. 下一个兄弟标签netxElementSibling
    6. 上一个兄弟标签previousElementSibling

    节点操作

    创建节点

    var divEle = document.createElement('需要创建的标签')

    这里定义的变量名最好使用标签名+Ele的形式定义,这样就可以一目了然的看到创建的标签类型

    添加节点

    1. 追加节点

      添加子节点

      somenode.appendChild(需要添加的节点)

      var divEle = doucument.getElementsByClassName('c1')[0]  // 通过类取标签取到的是一个数组,需要先索引取值
      divEle.appendChlid(imgEle)
      

      添加节点到最下方

      somenode.append(需要添加的节点)

      var divEle = document.getElementsByClassName('c1')[0]
      divEle.append(imgEle)
      

      append和appendChild 的区别:

      append可以同时传入多个节点或字符串,且没有返回值

      appendChild只能传入一个节点,不支持字符串

    2. 插入节点

      somenode.insertBefor(需要添加的节点,某个节点)

    var pEle = doucument.getElementByTagName('p');
    var imgEle = doucment.createElement('img');
    imgEle.setAttribute('src','https://www.baidu.com');
    pEle.appendChild(imgEle)
    

    删除节点

    somenode.remove(需要删除的节点)

    替换节点

    somenode.replace(需要替换的节点,某个节点)

    属性节点

    文本节点

    // 获取文本节点的值
    // 获取节点
    var divEle = doucument.getElementById('id')
    // 获取文本
    divEle.innerText
    // 获取整个HTML代码
    divEle.innerHTML
    
    // 设置文本节点的值
    divEle.innerText = '1231230';
    // 添加HTML代码
    divEle.innerHTML = '<p>2</p>'
    
    // 通过innerText添加的值为文本,就算是HTML代码也只是以文本形式显示
    // 没有赋值符号是获取文本,有赋值符号是设置文本
    

    attribute操作

    var divEle = document.getElementById("d1");
    // 可以设置默认的属性,也可以设置自定义的属性
    divEle.setAttribute("age","18")
    divEle.getAttribute("age")
    divEle.removeAttribute("age")
    
    // 自带的属性可以直接使用.属性名来获取和设置值
    imgEle.src
    imgEle.src="..."
    
    

    input标签,select标签,textarea标签获取值

    可以直接使用.value的型式elementNode.value

    var iEle = document.getElementById("i1");
    console.log(iEle.value);
    var sEle = document.getElementById("s1");
    console.log(sEle.value);
    var tEle = document.getElementById("t1");
    console.log(tEle.value);
    

    class操作

    • 获取所有样式类名(字符串)className
    • 删除指定类classList.remove()
    • 添加类classList.add()
    • 判断类是否属于标签classList.contains()
    • 存在删除,否则添加classList.toggle()

    指定css操作

    obj.style.backgroundColor="red"

    JS操作CSS属性的规律:

    1. 对于没有中横线的CSS属性一般直接使用style.属性名即可。如:
    obj.style.margin
    obj.style.width
    obj.style.left
    obj.style.position
    
    1. 对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:
    obj.style.marginTop
    obj.style.borderLeftWidth
    obj.style.zIndex
    obj.style.fontFamily
    

    事件

    事件指的是当符合某种条件下,自动触发的动作或者响应

    事件的两种绑定方式

    方式一

    在标签内部写发生的事件,在script标签内写事件发生的代码

    <div id="d1" onclick="changeColor(this);"> 
        这是一个链接
    </div>  <!--这里写发生的事件,this是一个实参,类似于python中的self-->
    <script> 
      function changeColor(ths) {
        ths.style.backgroundColor="green";
      }
    </script>   <!--这里写事件发生后的代码,ths是形参,接收this-->
    

    方式二

    全部写在body最下面的script标签中

    <div id="d2">这是一个链接</div>
    <script>
      var divEle2 = document.getElementById("d2");
      divEle2.onclick=function () {
        alter(123);
      }
    </script>  <!--这里不需要传入参数,需要的话可以直接this.-->
    

    常用事件

    事件 作用
    onclick 点击某个对象时调用事件句柄
    ondblclick 双击某个对象时调用事件句柄
    onfucus 某个元素获得焦点时调用事件句柄
    onblur 某个元素失去焦点时调用事件句柄
    onselect 在文本框文本被选中时调用事件句柄
    onsubmit 点击确认按钮时调用事件句柄,使用的对象时form

    事件练习

    开关灯示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .c1 {
                height: 400px;
                 400px;
                border-radius: 50%;
            }
    
            .bg_green {
                background-color: green;
            }
    
            .bg_red {
                background-color: red;
            }
        </style>
    </head>
    <body>
        <div class="c1 bg_green bg_red"></div>
        <button id='d1'>变色</button>
    
        <script>
            // 找到button标签
            let btnEle = document.getElementById('d1')
            // 点击触发事件
            btnEle.onclick = function(){
                // 找到div标签
                var divEle = document.getElementsByClassName('c1')[0]
                // 修改类属性值
                divEle.classList.toggle('bg_red')
            }
        </script>
    </body>
    </html>
    

    input获取焦点示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <input type="text" value="go语言" id="d1">
    
        <script>
            // 获取input标签
            var iEle = document.getElementById('d1');
            // input标签聚焦事件
            iEle.onfocus = function(){
                iEle.value = ''   
            };
    
            // input框失去焦点事件
            iEle.onblur = function(){
                iEle.value = 'pyton学习'
            } 
        </script>
    </body>
    </html
    

    展示当前时间示例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
    
        <title>Document</title>
    </head>
    <body>
        <input type="text" id="d1">
        <button id="b1">开始计时</button>
        <button id="b2">结束计时</button>
        <script>
            // 定义一个全局变量用来存储定时器
            var t = null;
    
            // 获取input框标签
            var iEle = document.getElementById('d1');
            // 获取开始计时标签
            var b1Ele = document.getElementById('b1');
            // 获取结束计时标签
            var b2Ele = document.getElementById('b2');
    
            // 获取一个定时器
            function showTime(){
                // 调用js的date类获得当前时间
                var currentTime = new Date();
                var ctime = currentTime.toLocaleString();
                // 给input标签添加当前时间的属性
                iEle.value = ctime
            }
    
            // 点击开始时间按钮事件
            b1Ele.onclick = function () {
                if(!t){
                    // 让t每隔一秒就加1
                    t = setInterval(showTime,1000)
                }
            };
    
            // 结束事件
            b2Ele.onclick = function () {
                clearInterval(t);
                // 将t给清空,不然下次就不会开始
                t = null
            }
        </script>
    </body>
    </html>
    

    省市联动示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <select name="" id="d1">省:
    
    </select>
    
    
    <select name="" id="d2">市:</select>
    
    <script>
        var s1Ele = document.getElementById('d1');
        var s2Ele = document.getElementById('d2');
    
    
        var data = {
            "河北省": ["廊坊", "邯郸",'石家庄'],
            "北京": ["朝阳区", "海淀区",'昌平区'],
            "山东": ["威海市", "烟台市",'青岛'],
            "上海":["静安区",'黄浦区','徐汇区']
        };
        // 动态创建option标签 添加到第一个选择框中
        for (let province in data){
            // 创建一个个的option标签
            var optEle = document.createElement('option');
            // 给创建的option标签设置文本和属性
            optEle.innerText = province;
            optEle.value = province;
            // 将创建好的option标签添加到select框中
            s1Ele.appendChild(optEle)
        }
        s1Ele.onchange = function () {
            // 获取用户选择的省 根据省 取到对应的市
            var currentPro = this.value;
            var cityList = data[currentPro];
    
            // 先将第二个select框中的所有内容清空
            s2Ele.innerHTML = '';
            // 循环市的数组 创建option标签  操作属性  添加到第二个select框中
            for (let i=0;i<cityList.length;i++){
                var optEle = document.createElement('option');
                optEle.innerText = cityList[i];
                optEle.value = cityList[i];
                s2Ele.appendChild(optEle)
            }
        }
    </script>
    </body>
    </html>
    
  • 相关阅读:
    String.Format( )用法
    Androidstudio中添加jar包的方法
    Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
    aravel 之父 Taylor Otwell :我是如何工作的
    【码云周刊第 22 期】GO :互联网时代的 C 语言!
    2017 JavaScript 开发者的学习图谱
    【码云周刊第 29 期】构建高性能微服务架构
    SOA和微服务
    NET Core Web 应用部署到 Docker 中运行
    Expression Trees
  • 原文地址:https://www.cnblogs.com/lyyblog0715/p/11892347.html
Copyright © 2020-2023  润新知