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.基本

js--DOM基本使用
  // 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.连贯操作

js--DOM基本使用
        // 找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.全选 反选 不选

js--DOM基本使用
<!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.显示隐藏密码与切换照片

js--DOM基本使用
<!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>
密码显示与否

 

js--DOM基本使用

上一篇:js判断浏览器类型


下一篇:串行口,spi,RS232,RS485,RJ45口以及Modbus协议