首页 > 其他分享 >【Web】0基础学Web—节点操作、发表神评妙论、事件添加和移除、事件冒泡和事件捕获

【Web】0基础学Web—节点操作、发表神评妙论、事件添加和移除、事件冒泡和事件捕获

时间:2025-01-10 16:32:38浏览次数:3  
标签:function Web let 事件 移除 div document 节点

0基础学Web—节点操作、发表神评妙论、事件添加和移除、事件冒泡和事件捕获

节点操作

创建节点

<script>
	let _div = document.createElement('div')
</script>

末尾追加子节点

append(…nodes)

<script>
        document.body.append(_div)
        let _div2 = document.createElement('div')
        _div.append(_div2)
        _div2.innerText = '张三'
</script>

插入节点

insertBefore(前,后)

<script>
    let _p = document.createElement('p')
    _p.innerText = 'Web'
    _div.insertBefore(_p, _div2)
</script>

将一个节点插入到一个父元素的最前面

<script>
    let _p2 = document.createElement('p')
    _p2.innerText = '学习'
    _div.insertBefore(_p2, _div.firstElementChild)
</script>

删除节点

<script>
	_p.remove()     //自我删除
	_div.removeChild(_p)   //父元素删除子元素
</script>

替换节点

replaceChild(替换,被替换)

<script>
    let _div3 = document.createElement('div')
    _div3.innerText = '替换'
    //  _div.replaceChild(_div3,_div2)
    _div2.replaceWith(_div3)
</script>

发表神评妙论案例

css

<style>
* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
ul {
    list-style: none;
}
.wrapper {
    width: 350px;
    position: relative;
}
textarea {
    width: 350px;
    height: 150px;
    /* 去掉缩放 */
    resize: none;
    border-radius: 8px;
    outline: none;
    padding: 4px 0 0 4px;
}
.send {
    width: 80px;
    height: 30px;
    background-color: #7a70e2;
    border: none;
    color: white;
    border-radius: 40px;
    position: absolute;
    bottom: 10px;
    right: 10px;
}
.send:disabled {
    opacity: 0.5;
}
ul li {
    width: 280px;
    position: relative;
    /* word-wrap: break-word; */
    overflow-wrap: break-word;
}
ul li:hover{
    background-color: #e9e9e9;
}
ul li button {
    border: none;
    display: none;
    background-color: white;
    width: 40px;
    position: absolute;
    right: 0;
}
ul li:hover button{
    display: inline-block;
}
ul li button:hover {
    display: inline-block;
    background-color: rgb(148, 148, 148);
}
</style>

body

<body>
    <div class="wrapper">
        <textarea class="comment" placeholder="发表神评妙论"></textarea>
        <button class="send" disabled>发表</button>
    </div>
    <ul class="list">
        <li>66666666666666666666666666666666666666666666666666666666666666666666<button onclick="del(this)">删除</button></li>
    </ul>
</body>

js

<script>
    let _comment = document.querySelector('.comment')
    let _send = document.querySelector('.send')
    let _list = document.querySelector('.list')
    //按钮启用禁用
    _comment.oninput = function () {
        let info = _comment.value
        if (info.length > 0) {
            _send.disabled = false  //启用
        } else {
            _send.disabled = true  //禁用
        }
    }
    _send.onclick = function () {
        let _li = document.createElement('li')
        _list.insertBefore(_li, _list.firstElementChild)
        _li.innerHTML = _comment.value + "<button class='del' οnclick='del(this)'>删除</button>"
        _comment.value = ''  //发表后清空
        _send.disabled = true  //禁用
    }
    function del(ele) {
        if (confirm('确认删除吗?')) {
            ele.parentElement.remove()
        }
    }
</script>

事件添加和移除

事件监听

事件监听,可以同时添加多个监听事件
addEventListener(‘事件名’,‘处理函数’,bool)

<style>
    .wrapper>div {
        width: 200px;
        height: 200px;
        border: 1px solid black;
    }
</style>



<body>
    <div class="wrapper">
        <div class="first"></div>
        <div class="second"></div>
    </div>
    <script>
        let _first = document.querySelector('.first')
        let _second = document.querySelector('.second')
        _first.onclick = function () {
            console.log(11)
        }
        // 后者覆盖前者
        _first.onclick = function () {
            _first.style.backgroundColor = 'red'
        }

        _second.addEventListener('click', function () {
            console.log(66)
        })
        _second.addEventListener('click', function () {
            _second.style.backgroundColor = 'red'
        })
    </script>
</body>

事件冒泡和捕获

addEventListener(‘事件名’,‘处理函数’,bool=false)
false:事件冒泡
true:事件捕获
事件冒泡,事件由子元素传递到父元素
事件捕获,事件由父元素捕获到子元素
阻止事件冒泡 event.stopPropagation()

<style>
    .outter {
        width: 200px;
        height: 200px;
        background-color: #cb1919;
    }
    .inner {
        width: 100px;
        height: 100px;
        background-color: #222dc5;
    }
</style>


<body>
    <div class="outter">
        <div class="inner"></div>
    </div>
    <a href="http://www.baidu.com">删除</a>
    <script>
        let _outter = document.querySelector('.outter')
        let _inner = document.querySelector('.inner')
        //
        _inner.addEventListener('click', function (event) {
            console.log('inner')
            event.stopPropagation()  //阻止事件冒泡
        }, false)

        _outter.addEventListener('click', function () {
            console.log('outter')
        }, false)

        //给 a添加事件
        let _a = document.querySelector('a')
        _a.onclick = function (event) {
            console.log('阻止默认事件')
            event.preventDefault()  //阻止默认事件
            // return false  //阻止默认事件
        }
    </script>
</body>

标签:function,Web,let,事件,移除,div,document,节点
From: https://blog.csdn.net/2201_75539182/article/details/144893073

相关文章

  • 代码随想论算法训练营第3天 | 链表理论基础,203.移除链表元素,707.设计链表,206.反转链表
    一、刷题部分1.1链表理论基础原文链接:代码随想录题目链接:......
  • 【Web】0基础学Web—事件对象、事件委托(事件代理)——星级评论案例
    0基础学Web—事件对象、事件委托(事件代理)——星级评论案例事件对象关闭鼠标右键的点击事件关闭鼠标滚轮的事件点击的目标对象点击鼠标的左键0滚轮1右键2获得被点击的节点的名称或取相对于浏览器左上角的距离(会受页面滚动条的影响)获取相对于文档左上角的距离(不受滚动条......
  • streamlit实现聊天机器人应用,掌握使用Python构建好看web的页面
     第一个可视化的大模型应用。实现一个带有可视化界面的聊天机器人应用,可以将我们之前实现的聊天机器人转化为一个更加直观、用户友好的,我们的第一个可视化的大模型应用。通过使用Streamlit,我们借助st.columns、st.container、st.chat_input和st.chatmessage等streamlitAPl......
  • 详解SonarQube Web API的使用方法以及典型应用场景(内附python代码)
    SonarQubeWebAPISonarQube的WebAPI是一组HTTPRESTAPI,允许开发人员与SonarQube服务器进行交互。这些API涵盖了SonarQube的各个方面,包括项目管理、问题管理、质量规则和指标等。我们可以在SonarQube的帮助菜单中查看相关使用信息,如下图所示:典型应用场景SonarQubeAPI可......
  • Web安全攻防入门教程——hvv行动详解
    Web安全攻防入门教程Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。本教程将带......
  • Web安全攻防入门教程——hvv行动详解
    Web安全攻防入门教程Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。本教程将带你......
  • SD WebUI必备插件安装,菜鸟轻松成高手!
    一个刚学AI绘画的小菜鸟怎么快速成为StableDiffusionde的高手?答案就是SD插件,只要学会使用SD的各种插件,帮你写正向和负向提示词,修复人脸/身体/手指,高清放大图片,指定人物pose,图片微调等等都可以轻松搞定,善用插件是成为高手必经之路。目录1插件安装方法2基础插件介绍3......
  • 【Mac实践Docker】使用Nginx部署Web应用
    Nginx部署Web应用学习资料参考一、安装Docker下载DockerDesktop:启动Docker:验证安装:macOS命令行工具Docker命令二、使用Nginx部署Web应用拉取Nginx镜像创建挂载目录创建容器并挂载目录创建并启动容器:复制配置文件到宿主机:删除容器并重新启动:重新启动容器并挂载目录:......
  • 记录---JS 的蝴蝶效应 —— 事件流
    ......
  • 基于 WEB 开发的高校学籍管理系统设计与实现
    标题:基于WEB开发的高校学籍管理系统设计与实现内容:1.摘要摘要:随着信息技术的不断发展,高校学籍管理系统的信息化建设已成为必然趋势。本文以高校学籍管理系统为研究对象,探讨了基于WEB开发的高校学籍管理系统的设计与实现。通过对系统的需求分析,设计了系统的总体架构和功......