【Javascript Day18】

目录

标签事件绑定的属性参数

阻止默认行为

dialog的实现及组织冒泡(捕获)传递

基于冒泡的事件委托

键盘事件的事件源对象信息

JS的自动触发操作


标签事件绑定的属性参数

<!-- 标签上的事件绑定,事件源对象通过 关键字event传递 -->
    <!-- 标签上的事件绑定,事件源对象通过 关键字this传递 -->
    <input type="button" value="事件绑定" οnclick="funA(event,this)">
    <input type="button" value="事件绑定" id="btn1">
    <input type="button" value="事件绑定" id="btn2">
    <script>
        function funA(e,dom){
            console.log(e);
            // console.log(this);
            console.log(dom);
            
        }

        // JS为元素绑定事件,默认只有一个参数,该参数是事件对象
        // JS为元素绑定的事件,在方法中this关键字,表示当前事件绑定的DOM对象
        var btnDom1 = document.querySelector("#btn1");
        btnDom1.onclick = function(e){
            console.log(e);
            console.log(this);
        }

        

        var btnDom2 = document.querySelector("#btn2");
        btnDom2.addEventListener("click",function(e){
            console.log(e);
            console.log(this);
        })

阻止默认行为


<!--
     默认行为:标签在不使用任何JS代码的情况下,就存在功能 
     阻止默认行为:让标签自带的功能失效
     -->
    <a href="https://www.baidu.com" οnclick="showTip()">百度</a>
    <script>
        function showTip(){
            alert(1)
        }
    </script>
    <hr>
    <a href="javascript:void(0)">为元素默认行为关键属性取值 javascrip:void(0)</a>
    <hr>
    <a href="https://www.baidu.com" οnclick="return false">为元素默认行为对应事件,绑定return false</a>
    <hr>
    <a href="https://www.baidu.com" οnclick="printMsg(event)">为元素默认行为对应事件回调,通过事件对象的preventDefault() 代码</a>
    <script>
        function printMsg(e){
            console.log("msg",e);
            e.preventDefault();
        }
    </script>

dialog的实现及组织冒泡(捕获)传递

<input type="button" value="页面的操作" οnclick="showTip()">
    <input type="button" value="打开弹窗" οnclick="openDialog()">

    <div class="dialog" id="a" οnclick="closeDialog(event)">
        <div class="content" οnclick="stopFun(event)">
            <input type="text">
            <input type="button" value="关闭" οnclick="closeDialog(event)">
        </div>
    </div>

    <script>
        function showTip(){
            alert(11)
        }
        var aDialog = document.querySelector("#a");
        function openDialog(){
            aDialog.style.display = "block";
        }
        function stopFun(e){
            // 方案2:使用事件对象的专用阻止冒泡(捕获)方法完成回调执行停止操作 stopPropagation()
            //       stopPropagation()表示将冒泡或者捕获方法停止在当前方法上
            e.stopPropagation();
        }
        function closeDialog(e){
            console.log(e);
            // 方案1:限定关闭功能只能由绑定事件的元素自身完成
            // if(e.currentTarget===e.target){
            //     aDialog.style.display = "none";
            // }
            // e.stopPropagation();
            aDialog.style.display = "none";
        }
    </script>

基于冒泡的事件委托

<input type="button" value="addItems" οnclick="addItems()">
    <ul id="list" οnclick="execUlFun(event)">
        
    </ul>
    <script>
        // 事件代理|事件委托
        //      将多个子元素的事件基于事件冒泡机制,交给父元素绑定并完成执行
        //      优点:减少资源占用->提高运行效率
        //      缺点:功能逻辑会比较复杂
        var tagNames = ["LI","SPAN"]
        function execUlFun(e){
            // console.log("ul的点击事件",e.target,e.currentTarget);
            console.log("ul的点击事件-DOM对象",e.target);
            // console.dir(e.target)
            // if(e.target.tagName=="LI"){
            //     console.log("ul的点击事件-内容",e.target.innerHTML);
            // }
            if( tagNames.includes(e.target.tagName) ){
                // console.log("ul的点击事件-内容",e.target.innerHTML);
                // 具体的业务逻辑需要具体的分析
                console.log("ul的点击事件-内容",e.target.innerText,e.target,e);
            }

        }

        var ulDom = document.querySelector("#list");
        function addItems(){
            for (var i = 0; i < 10; i++) {
                var li = document.createElement("li");
                li.classList.add( "item" );
                var span = document.createElement("span");
                let text = Math.random();
                span.innerHTML = text
                li.appendChild(span);
                // JS规则中每个元素绑定的事件,都是需要浏览器进行实际功能的监听的
                // li.onclick = function(){
                //     console.log(text,this);
                // }
                ulDom.appendChild(li);
            }
        }
    </script>

键盘事件的事件源对象信息

 <!-- 
        onkeypress 被弃用,目前新版本空格键数值键可以用
                          输入法无法触发
    -->
    <input type="text" οnkeydοwn="downFun()" οnkeypress="pressFun()" οnkeyup="upFun()">
    <script>
        function downFun(){
            console.log("被按下down");
        }
        function pressFun(){
            console.log("被按下press");
        }
        function upFun(){
            console.log("弹起up");
        }
    </script>

    <hr>
    <!-- 
        融合事件:有两个或以上的事件行为组成的事件
            + click : 左键按下和左键弹起
            + input : 键盘按下和键盘弹起
    -->
    <input type="text" οninput="inputUserWord()">
    <script>
        function inputUserWord(){
            console.log("有值输入");
        }
    </script>

    <hr>
    <!-- 
    键盘事件的三种场景
        1. 为可接收输入值的元素完成绑定 - 直接可以使用
        2. 为不可接收输入值的元素定义contenteditable属性,开启输入功能,并完成键盘事件绑定
        3. 直接为window对象绑定键盘事件,只要是在当前页面中执行就会触发
    -->
    <textarea οnkeydοwn="printEvent(event)"></textarea>
    <script>
        function printEvent(e){
            console.log(e);
            // 按键内容
            console.log(e.key);
            // 按键内容的ASCII编码 - 弃用
            console.log(e.keyCode);
        }
    </script>
    <div class="box" οnkeydοwn="printKey(event)" contenteditable></div>
    <script>
        function printKey(e){
            console.log(e);
            console.log(e.key);
        }
    </script>
    <hr>
    <script>
        window.onkeydown = function(){
            console.log("window监控");
        }
    </script>


JS的自动触发操作

<h1 id="count">0</h1>
    <input id="btn" type="button" value="累加" οnclick="addCount()">
    <script>
        var count = 0;
        var h1Dom = document.querySelector("#count");
        h1Dom.innerHTML = count;

        function addCount(){
            console.log("addCount");
            count++;
            h1Dom.innerHTML = count;
        }

        // js为dom对象的所有事件,都提供一个同名的触发方法,该方法只要被调用,会立即执行事件对应的函数
        var btnDom = document.querySelector("#btn");
        // 自动调用 点击功能
        // btnDom.click();

        // 延迟计时器
        // setInterval( fun,time-ms );
        //      每过time时间长度,自动执行一次 fun 方法
        setInterval( function(){
            btnDom.click();
        },500 )
    </script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁机器学习核心算法 | 支持向量机:机器学习中的分类利刃

一、引言 在机器学习的庞大算法体系中&#xff0c;有十种算法被广泛认为是最具代表性和实用性的&#xff0c;它们犹如机器学习领域的 “十大神器”&#xff0c;各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森林、K - 近邻算法、K - 平均算法、支持向…

玩客云 IP查找

1.玩客云使用静态IP在不同网段路由器下不能使用&#xff0c;动态不好找IP地址 1.1使用python3 实现自动获取发送 import requests import os import socket# 从环境变量获取 PushPlus 的 token 和群组编码 PUSH_PLUS_TOKEN os.getenv("PUSH_PLUS_TOKEN") PUSH_PLU…

Linux(Centos 7.6)命令详解:cat

1.命令作用 将文件或标准输入连接到标准输出(Concatenate FILE(s), or standard input, to standard output)&#xff0c; 即将文件内容输出到屏幕上&#xff0c;或者将多个文件合并成一个文件。 2.命令语法 Usage: cat [OPTION]... [FILE]... 3.参数详解 OPTION: -A, -…

深入解析Qt事件循环

在Qt开发中&#xff0c;QApplication::exec()这行代码是每个开发者都熟悉的“魔法咒语”。为什么GUI程序必须调用它才能响应操作&#xff1f;为何耗时操作会导致界面冻结&#xff1f;本文将以事件循环为核心&#xff0c;揭示Qt高效运转的底层逻辑&#xff0c;探讨其设计哲学与最…

Hive增量迁移方案与实操PB级

客户一共1PB数据&#xff0c;每天新增10T&#xff0c;有些表只保留3天。 需要客户提供&#xff1a; a.tbl_size(大小GB) a.last_mtime(最新更新时间) a.tbl_ttl(保留时间) b.last_part_dt(分区值) b.last_part_size(最新分区大小) t_day(表更新规律,t几) 因为目前…

未来游戏:当人工智能重构虚拟世界的底层逻辑

未来游戏&#xff1a;当人工智能重构虚拟世界的底层逻辑 在《赛博朋克2077》夜之城的霓虹灯下&#xff0c;玩家或许已经注意到酒吧里NPC开始出现微表情变化&#xff1b;在《艾尔登法环》的开放世界中&#xff0c;敌人的战术包抄逐渐显露出类人智慧。这些细节预示着游戏产业正站…

React中如何处理高阶组件中的错误

在 React 高阶组件中处理错误是确保应用程序健壮性和稳定性的重要环节。以下是一些处理高阶组件中错误的常见方法&#xff1a; 1. 捕获渲染时的错误 在高阶组件中&#xff0c;渲染过程可能会因为各种原因&#xff08;如 props 数据格式错误、组件内部逻辑异常等&#xff09;抛…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线&#xff0c;试用了下阿里云和腾讯云的deepseek服务&#xff0c;在回答经典数学问题9.9和9.11谁大时&#xff0c;发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

宝塔面板开始ssl后,使用域名访问不了后台管理

宝塔面板后台开启ssl访问后&#xff0c;用的证书是其他第三方颁发的证书 再使用 域名/xxx 的形式&#xff1a;https://域名:xxx/xxx 访问后台&#xff0c;结果出现如下&#xff0c;不管使用 http 还是 https 的路径访问都进不后台管理 这个时候可以使用 https://ip/xxx 的方式来…

开发板部署|RK3588部署DeepSeek-1.5B

前言 在 RK3588 上部署大模型可以显著提升计算效率、节能、加速推理过程&#xff0c;并实现本地化推理&#xff0c;适合各种边缘计算应用&#xff0c;如智能设备、自动驾驶、工业机器人、健康监测等领域。此外&#xff0c;RK3588 配备了强大的 NPU&#xff08;神经网络处理单元…

UDP与TCP

用UDP一定比用TCP快吗&#xff1f; 假设我们需要在a电脑的进程发一段数据到b电脑的进程我们可以选择使用TCP或UDP协议进行通信。 对于TCP这样的可靠性协议每次消息发出后都能明确知道对方有没有收到&#xff0c;就像打电话一样&#xff0c;只要“喂喂"两下对方就能回你个…

【ELK】【Elasticsearch】数据查询方式

1. 简单查询&#xff08;URI Search&#xff09; 通过 URL 参数直接进行查询&#xff0c;适合简单的搜索场景。 示例&#xff1a; bash 复制 GET /index_name/_search?qfield_name:search_value 说明&#xff1a; index_name&#xff1a;索引名称。 field_name&#xf…

软件测试:定义和实质

软件缺陷的定义&#xff1a; 未实现说明书要求的功能出现了说明书指明不应出现的错误实现了说明书未提到的功能未实现说明书没有明确提出但应该实现的目标软件难以理解&#xff0c;不易使用&#xff0c;运行缓慢 或者从测试员客户会认为不好的。 软件缺陷的原因&#xff1a; …

【软考】【2025年系统分析师拿证之路】【啃书】第十一章 软件需求工程(十二)

目录 需求的层次需求工程的主要活动需求的记录技术需求分析需求定义 需求的层次 业务需求用户需求系统需求 需求工程的主要活动 需求获取需求分析形成需求规格需求确认和验证需求管理 需求的记录技术 任务卡片场景说明用户故事 需求分析 方法&#xff1a; 结构化分析&a…

计算机网络原理试题六

一、单项选择 1.(单选题,5分)IP地址中网络号的作用有 A.指定了设备能够进行通信的网络 B.指定了主机所属的网络 C.指定了被寻址的子网中的某个节点 D.标志了网络中的主机 答案:B 2.(单选题,5分)关于IP主机地址,下列说法正确的是 A.网段部分不可以全1也不可以全0 B.主机部分可…

路由基础 | 路由引入实验 | 不同路由引入方式存在的问题

注&#xff1a;本文为 “路由基础 | 路由表 | 路由引入” 相关文章合辑。 未整理去重。 路由基本概念 1—— 路由表信息、路由进表以及转发流程、最长掩码匹配原则 静下心来敲木鱼已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指导报文转发的路径信息&#xff0c;可以…

更高效实用 vscode 的常用设置

VSCode 可以说是文本编辑神器, 不止程序员使用, 普通人用其作为文本编辑工具, 更是效率翻倍. 这里分享博主对于 VSCode 的好用设置, 让 VSCode 如虎添翼 进入设置 首先进入设置界面, 后续都在这里进行配置修改 具体设置 每项配置通过搜索关键字, 来快速定位配置项 自动保存…

本地部署DeepSeek

1、下载ollama 浏览器输入ollama&#xff0c;打开ollama网站&#xff0c;选择版本下载 可以使用迅雷下载 打开迅雷&#xff0c;复制网址 2、安装ollama ollama下载完成之后&#xff0c;安装 3、查看ollama版本 Win R&#xff0c;cmd ollama -v 查看ollama版本 4、下载De…

大模型驱动的业务自动化

大模型输出token的速度太低且为统计输出&#xff0c;所以目前大模型主要应用在toP&#xff08;人&#xff09;的相关领域&#xff1b;但其智能方面的优势又是如此的强大&#xff0c;自然就需要尝试如何将其应用到更加广泛的toM&#xff08;物理系统、生产系统&#xff09;领域中…

Leetcode1299:将每个元素替换为右侧最大元素

题目描述&#xff1a; 给你一个数组 arr &#xff0c;请你将每个元素用它右边最大的元素替换&#xff0c;如果是最后一个元素&#xff0c;用 -1 替换。 完成所有替换操作后&#xff0c;请你返回这个数组。 代码思路&#xff1a; 方法 replaceElements 输入参数&#xff1a;…