[前端] 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>

环视挺好用的

相关推荐
J不A秃V头A25 分钟前
Vue3:编写一个插件(进阶)
前端·vue.js
司篂篂1 小时前
axios二次封装
前端·javascript·vue.js
姚*鸿的博客1 小时前
pinia在vue3中的使用
前端·javascript·vue.js
宇文仲竹2 小时前
edge 插件 iframe 读取
前端·edge
Kika写代码2 小时前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构
天下无贼!3 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr3 小时前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林3 小时前
npm发布插件超级简单版
前端·npm·node.js
我码玄黄3 小时前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
罔闻_spider3 小时前
爬虫----webpack
前端·爬虫·webpack