[前端] todoList制作

知识点回顾

  1. 后代选择器 可以使用多个选择器每个选择器之间用空格分开。只要是后代就会被选择如
html 复制代码
<style>
	div a{
		color: red;
	}
</style>
<div>
	<a href="">我是儿子</a>
	<p>
		<a href="">我是孙子</a>
	</p>
</div>

此时两个超链接都会变色

  1. 子代选择器 可以使用多个选择器每个选择器之间用 > 分割。只有子代才会被选择
html 复制代码
<style>
	div>a{
		color: red;
	}
</style>
<div>
	<a href="">我是儿子</a>
	<p>
		<a href="">我是孙子</a>
	</p>
</div>

第一个超链接才会变成红色

  1. 如何去除html自带的 li 的样式
html 复制代码
li {
	list-style:none;
}
  1. 如果一个div盒子有高度,如何让里面的文字垂直居中
html 复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试input checkbox的label</title>
    <style>
        div{
            height: 40px;
            border: 1px solid pink;
            line-height: 40px;
        }
    </style>
</head>
<body>
    <div>真的笑不出来了</div>
    <script>
    </script>
</body>
</html>

使用 line-height 即可。

  1. 插入一个节点,使用document.createElement("<tagName>") 使用 append 表示在尾后插入一个子节点,使用prepend 表示在头部插入一个子节点。
    after 则是在这个节点后插入一个兄弟节点,before 则是在这个节点前面插入一个兄弟节点。删除节点很爽不需要知道这个节点的父节点是什么直接调用remove()方法即可。
html 复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>插入删除节点例子</title>
</head>
<body>
    <button id="id_btn_add">点击增加节点</button>
    <button id="id_btn_delete">点击删除节点(删除年级)</button>
    <ul>
        <li>一年级
            <ul>
                <li>小明</li>
                <li>小红</li>
            </ul>
        </li>
        <li>二年级
            <ul>
                <li>老王</li>
                <li>杰哥</li>
            </ul>
        </li>
    </ul>
    <script>
        let btnAdd = document.querySelector("#id_btn_add");
        btnAdd.addEventListener("click", e => {
            let ulEle = document.querySelector("body>ul");
            let liEle = document.createElement("li");
            liEle.innerHTML = '三年级<ul><li>翠翠</li><li>兰兰</li></ul>';
            ulEle.append(liEle);

            let test = document.querySelectorAll("body>ul>li");
            let grandLiEle = test[0].querySelectorAll("ul>li")[0];
            let newLiEle = document.createElement("li");
            newLiEle.innerHTML = "八戒";
            grandLiEle.after(newLiEle);
        });

        let btnDele = document.querySelector("#id_btn_delete");
        btnDele.addEventListener("click", e => {
            let liNodeList = document.querySelectorAll("body>ul>li");
            if(liNodeList.length > 0){
                liNodeList[liNodeList.length - 1].remove();
            }else{
                alert("没有元素可以删除了");
            }
        });
    </script>
</body>
</html>
  1. 事件的冒泡,冒泡这个特性还是经常用到的,真正产生事件的html元素通过 event.target来获取。获取到对应的html元素后,就可以有很多操作了,如 parentNode 来获取该元素的父亲元素。nodeName 来获取节点名称等等
html 复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件的冒泡</title>
    <style>
        div{
            height: 60px;
            border: 1px solid pink;
        }
    </style>
</head>
<body>
    <div class="wrapper" id="id_box">
        <ul>
            <li>我是小明</li>
        </ul>
    </div>
    <script>
        let divEle = document.querySelector("#id_box");
        divEle.addEventListener("click", event => {
            console.log(event.target);
        });
    </script>
</body>
</html>
  1. html中并没有什么直接方法来获取 ul 或者 ol 下面 li的数量。还是得通过querySelectorAll()接口来获取
html 复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件的冒泡</title>
    <style>
        div{
            height: 60px;
            border: 1px solid pink;
        }
    </style>
</head>
<body>
    <button id="id_btn">获取li的数量</button>
    <ul>
        <li>小红</li>
        <li>大白</li>
        <li>丽丽</li>
    </ul>
    <script>
        let btnEle = document.querySelector("#id_btn");
        let ulEle = document.querySelectorAll("body>ul>li");
        btnEle.addEventListener("click", event => {
            console.log(ulEle.length);
        });
    </script>
</body>
</html>
  1. 正则表达式向后向前环视,(首先书上写JavaScript不支持环视,但是现在JavaScript是支持的)。
html 复制代码
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>正则表达式环视</title>
    <style>
        div{
            height: 60px;
            border: 1px solid pink;
        }
    </style>
</head>
<body>
    <script>
        let str = "已完成8/全部10";
        let str1 = "https://www.forta.com";
        let complete = str.match(/(?<=已完成)[0-9]+/);
        let total = str1.match(/\w+(?=:)/);
        console.log(complete[0]);
        console.log(total[0]);
    </script>
</body>
</html>

环视挺好用的

相关推荐
向前看-21 分钟前
验证码机制
前端·后端
燃先生._.1 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js
高山我梦口香糖2 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
唯之为之2 小时前
巧用mask属性创建一个纯CSS图标库
css·svg
m0_748235242 小时前
前端实现获取后端返回的文件流并下载
前端·状态模式
m0_748240253 小时前
前端如何检测用户登录状态是否过期
前端
black^sugar3 小时前
纯前端实现更新检测
开发语言·前端·javascript
寻找沙漠的人4 小时前
前端知识补充—CSS
前端·css
GISer_Jing4 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试