js -- DOM

作者: 像我这么帅的一般都是主角 | 来源:发表于2022-07-14 17:42 被阅读0次

DOM – document object model


image.png
image.png
image.png

案例-回到顶部

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>java script</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            body{
                height: 3000px;
            }
            .header{
                width:100%;
                height:80px;
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 30px;
                color: white;
                background-color: skyblue;

                transition: top .5s linear;

                position: fixed;
                top: -80px;
                left:0;
            }
            .goTop{
                width: 50px;
                height: 50px;
                background-color: pink;
                font-size: 20px;
                text-align: center;
                line-height: 25px;
                color: white;

                position: fixed;
                bottom: 50px;
                right: 50px;

                display: none;
            }
        </style>
    </head>

    <body>
    <div class="header">header</div>
    <div class="goTop">go top</div>
    <script>
        // 1. get element
        var header = document.querySelector('.header');
        var goTop = document.querySelector('.goTop');
        // 2. 绑定滚动事件
        window.onscroll = function () {
            // 2.1 获取浏览器卷去高度
            var height = document.documentElement.scrollTop || document.body.scrollTop;
            // 2.2 判断卷去的高度
            if (height >= 300){
                //显示
                header.style.top = '0px';
                goTop.style.display = 'block';
            }else{
                //隐藏
                header.style.top = '-80px';
                goTop.style.display = 'none';
            }
            // 3. 绑定点击事件
            goTop.onclick = function () {
                // 3.1 让页面滚回到顶部
                window.scrollTo({
                    top: 0,
                    behavior :'smooth',
                        }
                )
            }
        }
    </script>
    </body>
</html>

案例- 全选

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>java script</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            .box{
                width: 100px;
                padding: 20px;
                border: 1px solid pink;
                margin: 30px auto;
                border-radius: 5px;
            }
            hr{
                margin: 10px 0;
            }
        </style>
    </head>

    <body>
        <div class="box">
            selectAll <input type="checkbox"> <br>
            <hr>
            <input type="checkbox">1<br>
            <input type="checkbox">2<br>
            <input type="checkbox">3<br>
            <input type="checkbox">4<br>
        </div>
        <script>
            // 1. get element
            var allBtn = document.querySelector('input');
            var items = document.querySelectorAll('input:nth-child(n+2)');

            console.log(allBtn);
            console.log(items);
            // 2. 给全选按钮绑定事件
            allBtn.onclick = function () {
                // 2.1 拿到自己的选中状态
                var type = allBtn.checked;
                console.log(type);
                // 2.2 把自己的选中状态设置给每一个选项按钮
                for (var i = 0 ; i < items.length; i ++){
                    items[i].checked = type;
                }
            }
            // 3. 循环给每一个选项按钮绑定点击事件
            for (var i = 0 ; i < items.length ; i ++){
                // 3.1 给每一个选项按钮绑定点击事件
                items[i].onclick = function () {
                    // 3.2 首先定义假设变量,假设所有按钮都是选中的
                    var flag = true;
                    // 3.3 通过循环来验证假设
                    for (var j = 0 ; j < items.length ; j ++){
                        if(items[j].checked === false){
                            flag = false;
                            break;
                        }
                    }
                    // 3.4 把得到的结果设置给全选按钮
                    allBtn.checked = flag;
                }
            }
        </script>
    </body>
</html>

案例 - 选项卡

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>java script</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            ul, ol , il{
                list-style: none;
            }
            .box{
                width: 600px;
                height: 400px;
                border: 3px solid pink;
                margin: 50px auto;
                display: flex;
                flex-direction: column;
            }
            .box > ul {
                height: 60px;
                display: flex;
            }
            .box > ul > li {
                flex: 1;
                color: white;
                background-color: skyblue;
                font-size: 30px;
                display: flex;
                justify-content: center;
                align-items: center;
                cursor: pointer;
            }
            .box > ul > li.active{
                background-color: orange;
            }
            .box > ol {
                flex: 1;
                position: relative;
            }
            .box > ol > li {
                width: 100%;
                height: 100%;
                background-color: purple;
                display: flex;
                justify-content: center;
                align-items: center;
                color: white;
                font-size: 100px;

                position: absolute;
                left: 0;
                top: 0;

                display: none;
            }
            .box > ol > li.active{
                display: flex;
            }
        </style>
    </head>

    <body>
        <div class="box">
            <ul>
                <li class="active">1</li>
                <li>2</li>
                <li>3</li>
            </ul>
            <ol>
                <li class="active">1</li>
                <li>2</li>
                <li>3</li>
            </ol>
        </div>
        <script>
            // 1. get element
            var btns = document.querySelectorAll('ul > li');
            var tabs = document.querySelectorAll('ol > li');
            // 2. 给btns里面所有按钮添加绑定事件
            btns.forEach(function (item, index) {
                item.onclick = function () {
                    // 2.1 给btn和tabs里面的所有内容取消active类名
                    btns.forEach(function (t, i) {
                        t.className = '';
                        tabs[i].className = '';
                    })
                    // 2.2 当前点击的按钮和索引对应的盒子添加active类名
                    item.className = 'active';
                    tabs[index].className = 'active'
                }
            })
        </script>
    </body>
</html>
image.png
image.png

案例 - 生成表格

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>java script</title>
        <style>
            table {
                width: 300px;
                text-align: center;
            }
        </style>
    </head>

    <body>
        <table border="1" cellspacing="0">
            <thead>
                <tr>
                    <th>id</th>
                    <th>name</th>
                    <th>age</th>
                </tr>
            </thead>
            <tbody>
                <!-- JS 渲染 -->
            </tbody>
        </table>
        <script>
            var users = [
                { id: 1, name: 'dkw', age: 22},
                { id: 2, name:'yz', age: 21}
            ];
            // 0. 获取到tbody标签
            var tbody = document.querySelector('tbody');
            // 1. 循环遍历users数据
            users.forEach(function (item) {
                // item为数组中的一个对象
                console.log(item);
                // 2. 每循环一次都要生成一个tr标签
                var tr = document.createElement('tr');
                // 3. 循环遍历item
                for(var key in item){
                    // 4. 生成td标签
                    var td = document.createElement('td');
                    td.innerHTML = item[key];
                    // 5. 把td插入到tr标签内部
                    tr.appendChild(td)
                }
                // 6. 把本次的tr插入到tbody的内部
                tbody.appendChild(tr);
            })
        </script>
    </body>
</html>

相关文章

  • Day7:virtual dom & MVVM

    virtual dom 什么是virtual dom 虚拟dom 用JS模拟DOM结构 DOM变化的对比,放在JS...

  • virtual dom

    virtual dom --- 即虚拟dom 1.用js模拟DOM结构 2.DOM变化的对比,放在js层来做(js...

  • React 入门(阮一峰教程笔记)

    一 react.js react-dom.js Brower.js react.js 核心库 react-dom....

  • DOM

    DOM JS的组成 ECMAScript js的基础语法 DOM 文档对象模型 BOM ...

  • 面试中React与Vue的比对 / 面试/mvvm/virtua

    1.virtual dom 用JS模拟DOM结构,DOM变化的对比,放在JS层做,以提高重绘性能 DOM操作昂贵,...

  • JS第七天-03

    DOM DOM树结构关系代码示例: 一、JS中标签关系 二、JS操作页面标签 三、JS操作DOM一般步骤 1、创建...

  • 异步编程

    js是单线程原因 ● 原因-避免DOM渲染的冲突● 浏览器需要渲染DOM● JS可以修改DOM结构● JS执行的时...

  • 虚拟DOM的实现

    [维护状态,更新视图]用js对象表示Dom元素js: 表示dom结构为: Virtual DOM 算法,包括几个步...

  • element upload http-request 设置上传

    dom js

  • 2.JavaScript优化-DOM

    DOM优化 一、DOM与JavaScript 浏览器会把DOM与js独立实现-像两个独立的小岛 js操作dom-从...

网友评论

      本文标题:js -- DOM

      本文链接:https://www.haomeiwen.com/subject/ghrcirtx.html