• js--DOM基本使用


    一 history 对象 和 navigator 对象

     1.查看history历史对象

    <button onclick="func1()">查看history历史对象</button>
    <script>
    
    function func1(){
                console.log(history)
    }
    
    </script>

    2.回到上一页 和 下一页

    <button onclick="func2()">上一页</button>
    <button onclick="func3()">下一页</button>
    <script>
    
            function func2(){
                history.go(-1)
            }
    
            function func3(){
                // 跳转第一页
                history.go(1)
                // 跳转到第二页
                history.go(2)
            }
    
    </script>

    3.刷新

    <button onclick="func4()">刷新</button>
    <script>
    
            function func4(){
                history.go(0)
            }
    
    
            console.log(navigator) 
            console.log(navigator.platform)  // 判断是pc端还是移动端
            console.log(navigator.userAgent) // 用在爬虫中,未造成浏览器进行爬取数据
    </script>

    二. DOM找节点_通过选择器

    """通用代码"""    
    <div id="box">
            <p class="p1">张三</p>
            <p class="p1">李四</p>
            <p class="p2">王五</p>
        </div>
    
        <!-- <======================> -->
    
        <div id="box2">
            <input type="text" name="username">
            <input type="text" name="username2">
            <div name="aa">赵六</div>
            <div name="aa">田七</div>
        </div>

    1.document 

    // 通过id找元素节点
    
    var box = document.getElementByID('box')
    console.log(box)

    2.getElementsByClassName

    //通过class找元素节点 [返回的是数组]
    
    var p1 = document.getElementsByClassName('p1')
    console.log(p1)
    zhangsan = p1[0]
    console.log(zhangsan)
    lisi = p1[1]
    console.log(lisi)

     3.getElementsByTagName

    //通过标签获取元素节点 [返回的是数组]
            var p = document.getElementsByTagName("p")
            console.log(p)

    4.getElementsByName

    //通过标签身上的name属性 [返回的是数组]
    var input = document.getElementsByName("username")[0]
    console.log(input)
    var div = document.getElementsByName("aa")
    console.log(div)
    console.log(div[0])
    console.log(div[1])

    5.querySelector

    //通过css选择器的方式,获取对应的元素节点(获取一个)
    var input = document.querySelector("input")
    console.log(input , typeof(input))
    
    console.log("<==============>")
    var div = document.querySelector("#box2 div")
    console.log(div)
    console.log("<==============>")

    6.querySelectorAll

    //通过css选择器的方式,获取对应的元素节点(获取所有),返回数组
    var all = document.querySelectorAll("input")
    console.log(all , typeof(input))

    三. DOM找节点_通过层级关系

     <div class="aaa">1号div</div>
        <div>2号div</div>
        <div id="box">3号div
            <p>1号p</p>
            <p>2号p</p>
        </div>
        <div>4号div</div>
        <div>5号div</div>

    1.基本

      // 1.获取文档的元素节点对象
            console.log(document.documentElement)
            // 2.获取文档的元素节点对象 -> 子节点
            var html_children = document.documentElement.children
            console.log(html_children) // [head, body]
    
            // 找body
            body = html_children[1]
            body = document.body
            console.log(body)
            // 找body => 所有子节点
            console.log(body.children)
            // 找body => 子节点中的第一个
            console.log(body.children[0])
            // firstElementChild 获取第一个元素节点
            console.log(body.firstElementChild)
            // lastElementChild  获取最后一个元素节点
            console.log(body.lastElementChild)
    基本查找

    2.连贯操作

            // 找body => 子节点中的第一个 => 下一个节点
            console.log(body.children[0].nextSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点
            console.log(body.children[0].nextElementSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点
            console.log(body.children[0].nextElementSibling.nextElementSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 子节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.children)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.children[1])
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.lastElementChild)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点 => 上一个节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.lastElementChild.previousSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点 => 上一个元素节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.lastElementChild.previousElementSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点 => 上一个元素节点 => 上一个节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.lastElementChild.previousElementSibling.previousSibling)
    
            // 找body => 子节点中的第一个 => 下一个元素节点 => 下一个元素节点 => 第二个子节点 => 上一个元素节点 => 上一个节点 => 父元素节点
            console.log(body.children[0].nextElementSibling.nextElementSibling.lastElementChild.previousElementSibling.previousSibling.parentElement)
    连贯操作

    四.dom_控制节点

    1.创建元素节点对象

    var img = document.createElement('img')

    2.设置节点属性 方法一 

    1.设置属性 ok

    img.src = 'mixian.png'
    img.title = '过桥的米线'

    2.自定义属性 no

    img.abcd = "ceshi"
    console.log(img)    //error

    2.设置节点属性 方法二

    内置属性 ok

    img.setAttribute("src","lixian.png")

    自定义属性 ok

    img.setAttribute("abcd","ceshi")

    3.获取节点属性

    console.log(img.abcd)
    console.log(img.getAttribute('abcd'))

    4.把img元素节点对象插入到div appendChild

    var box = document.getElementByID('box')
    // 插到最后
    box.appendChild(img)

    5.添加a链接插入到img这个标签的前面

    var a = document.createElement('a')
    a.href = "http://www.baidu.com"
    // 给a标签添加内容
    a.innerText = "点我跳百度"
    // insertBefore(新元素,旧元素)
    box.insertBefore(a,img)
    console.log(a)

    6.其他操作

    删除节点

    box.removeChild(img)

    删除属性

    a.removeAttribute('href')

    替换节点

    var span = document.createElement('span')
    insertBefore(新元素,旧元素)
    box.replaceChild(span,a)
    console.log(box)

    五 DOM_修改内容

    1.修改内容

    <button onclick="func1()">点我修改内容</button>
     var p =  document.querySelector("#box p")
            function func1(){
                // 方式一 (只识别文本)
                // p.innerText = "没中奖 <a href='http://www.baidu.com'>点我</a>"
                // 方法二 (识别文本+标签) 推荐
                p.innerHTML = "没中奖 <a href='http://www.baidu.com'>点我</a>"
                // 获取
                console.log(p.innerHTML)
            }

    2.清空

    <button onclick="func2()">点我清空内容</button>
     function func2(){
                p.innerHTML = ""
            }

    3.获取表单内容

    <button onclick="func3()">点我获取表单内容</button>
    function func3(){
        var text = document.querySelector("input[type=text]")
        var file = document.querySelector("input[type=file]")
        console.log(text)
        console.log(file)
        console.log(text.value)
        // 获取的是文件路径
        console.log(file.value , typeof(file.value))
        // 获取数据本身
        console.log(file.files)
        console.log(file.files[0])
    }

    六 小效果

    1.全选 反选 不选

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>全选,反选,不选</title>
    </head>
    <body>
        
        <ul id="ul1">
            <li> <button>全选</button> </li>        
            <li> <button>不选</button> </li>
            <li> <button>反选</button> </li>
        </ul>
    
        <ul id="ul2">
            <li> <input type="checkbox"  > 吃饭 </li>
            <li> <input type="checkbox" > 吃米线 </li>
            <li> <input type="checkbox" > 打豆豆 </li>
            <li> <input type="checkbox" > 学python </li>
        </ul>
    
        <script>
            btn1 = document.querySelector("#ul1 li:nth-child(1)")
            btn2 = document.querySelector("#ul1 li:nth-child(2)")
            btn3 = document.querySelector("#ul1 li:nth-child(3)")
            console.log(btn1)
    
            // 设置全选
            btn1.onclick = function(){
                var data = document.querySelectorAll("#ul2 li input")
                console.log(data)
                for(var i of data){
                    // 设置当前阶段对象input为选中状态;
                    i.checked = true;
                }
            }
    
            //设置不选
            btn2.onclick = function(){
                var data = document.querySelectorAll("#ul2 li input")
                for(var i of data){
                    // 设置当前阶段对象input为选中状态;
                    i.checked = false;
                }
            }
    
            // 设置反选
            btn3.onclick = function(){
    
                var data = document.querySelectorAll("#ul2 li input")
                for(var i of data){
                    // 方法一
                    i.checked = !i.checked
                    /*
                    // 方法二
                    if(i.checked == true){
                        i.checked = false;
                    }else{
                        i.checked = true;
                    }
                    */
                }
            }
    
    
    
    
    
    
        </script>
    
    
    </body>
    </html>
    全选 反选 不选

    2.显示隐藏密码与切换照片

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>显示隐藏密码</title>
    </head>
    <body>
        <input type="password" >
        <button onclick="func1()" >显示密码</button>
    
        
        <div>
            <img src="lixian.png" alt="">
        </div>
    
        <script>
            // 1实现效果: 显示隐藏密码
            var password = document.querySelector("input[type=password]")
            var button = document.querySelector("button")
            console.log(password)
            console.log(button)
    
            function func1(){
                console.log(password.type)
                if(password.type == "password"){
                    password.type = "text";
                    button.innerHTML = "隐藏密码"
                }else{
                    password.type = "password";
                    button.innerHTML = "显示密码"
                }            
            }
    
            // 2.实现效果: 切换图片
            var img = document.querySelector("img")
            img.onclick = function(){
                console.log(img.src)
                // 按照/进行分割,获取文件名
                var arr = img.src.split("/")
                // 文件名在数组的最后一个元素上
                var imgname = arr[arr.length-1]
                // 如果是lixian就来回切换(大小图)
                if(imgname == "lixian.png"){
                    img.src = "da.png"
                }else{
                    img.src = "lixian.png"
                }
                
                console.log(imgname)
            }
    
        </script>
    
        
    </body>
    </html>
    密码显示与否
  • 相关阅读:
    Win7 华硕电脑自带摄像头无法打开 方法思路介绍
    P3520 [POI2011]SMI-Garbage
    二分图的最大匹配(模板)
    #数列分块入门 2
    数列分块入门#1
    线段树(标记下传乘法和加法)
    最小费用最大流
    最大流算法(模板)
    编译器出现/mingw32/bin/ld.exe:Permission denied 错误
    1298 圆与三角形
  • 原文地址:https://www.cnblogs.com/whc6/p/14310626.html
Copyright © 2020-2023  润新知