ArcGIS API for JavaScript 4.15系列(6)——Dojo中的事件绑定

news2024/11/22 15:31:01

1、前言

Web界面中,用户点击按钮、选择下拉选项、移动鼠标都涉及到dom元素的事件机制。下面就来介绍一下Dojo中的事件绑定操作。

2、dojo/on模块绑定事件

我们就从最简单的按钮click事件入手,Dojo中的dojo/on模块可以实现dom元素的事件绑定,第一个参数为dom元素,第二个参数为事件名称,第三个参数为回调函数,dojo/on模块对于绑定单个dom元素的事件很方便,代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <button id="btn">按钮</button>
    <script>
        require(['dojo/on', 'dojo/dom', 'dojo/domReady!'], function (on, dom) {
            var button = dom.byId('btn');
            on(button, 'click', function () {
                window.alert('绑定了button的click事件');
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述

3、dojo/query模块绑定事件

除了使用dojo/on模块外,我们也可以使用dojo/query模块实现事件绑定。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <button id="btn">按钮</button>
    <script>
        require(['dojo/query', 'dojo/domReady!'], function (query) {
            query('#btn').on('click', function () {
                window.alert('绑定了button的click事件');
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述
使用dojo/query模块的好处就是可以实现事件的批量绑定,下面代码批量绑定了按钮的click事件:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <script>
        require(['dojo/query', 'dojo/domReady!'], function (query) {
            query('button').on('click', function () {
                console.log(this.innerText);
            })
        });
    </script>
</body>
</html>

依次点击四个按钮,控制台输出结果如下所示:

按钮1
按钮2
按钮3
按钮4

4、html窗口事件的绑定

窗口事件主要有获得焦点(onfocus)、失去焦点(onblur)等,下面代码演示了判断文本框是否获取焦点:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <input id="userName" type="text" name="userName" />
    <script>
        require(['dojo/on', 'dojo/dom', 'dojo/domReady!'], function (on, dom) {
            var element = dom.byId('userName');
            on(element, 'focus', function () {
                console.log('获取焦点');
            })

            on(element, 'blur', function () {
                console.log('失去焦点');
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述

5、html鼠标事件的绑定

鼠标事件主要有mouseoutmouseovermousedownmouseup等,下面代码演示了监听divmouseoutmouseover事件:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <div id="box" style="width: 100px; height: 100px; border:1px solid black"></div>
    <script>
        require(['dojo/on', 'dojo/dom', 'dojo/domReady!'], function (on, dom) {
            var box = dom.byId('box');
            on(box, 'mouseout', function () {
                box.innerHTML = '鼠标移出div';
            })
            on(box, 'mouseover', function () {
                box.innerHTML = '鼠标移入div';
            })
        });
    </script>
</body>
</html>

运行结果如下所示:

在这里插入图片描述

6、html表单事件的绑定

6.1、select表单

select表单下拉选项变化的change事件代码如下

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <select id="fruit">
        <option value="橘子">橘子</option>
        <option value="菠萝">菠萝</option>
        <option value="西瓜">西瓜</option>
    </select>
    <script>
        require(['dojo/on', 'dojo/dom', 'dojo/domReady!'], function (on, dom) {
            var element = dom.byId('fruit');
            on(element, 'change', function (e) {
                window.alert('选择了:' + e.target.value);
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述

6.2、radio表单

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <input type="radio" name="gender" value="" checked /><input type="radio" name="gender" value="" /><script>
        require(['dojo/query', 'dojo/domReady!'], function (query) {
            query('input[name=gender]').on('change', function (e) {
                window.alert('性别为:' + e.target.value);
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述

6.3、checkbox表单

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>demo</title>
    <script src="http://localhost/arcgis_js_api/library/4.15/dojo/dojo.js"></script>
</head>
<body>
    <input type="checkbox" name="remember" value="记住密码" />记住密码
    <script>
        require(['dojo/query', 'dojo/domReady!'], function (query) {
            query('input[name=remember]').on('change', function (e) {
                if (e.target.checked) {
                    window.alert('操作:记住密码');
                } else {
                    window.alert('操作:不记住密码');
                }
            })
        });
    </script>
</body>
</html>

运行结果如下图所示:

在这里插入图片描述

7、结语

本文主要介绍了Dojo中的事件绑定操作,合理使用Dojo中的事件绑定机制可以帮助开发者创建交互性良好的Web界面。

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

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

相关文章

高性能办公娱乐迷你主机——Maxtang大唐AMD5600U

今天给大家介绍一款AMD5600U迷你主机&#xff0c;说起这款处理器大家应该并不陌生&#xff0c;像联想小新、YOGA以及ThinkBook等很多款用的都是这个型号&#xff0c;不过笔记本的价格基本都在3999-4999这个价位区间&#xff0c;同样的处理器&#xff0c;笔记本卖那么贵&#xf…

内网渗透(二十八)之Windows协议认证和密码抓取-Windows RDP凭证的抓取和密码破解

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

帮公司面试了一个30岁培训班出来的程序员,没啥工作经验...

首先&#xff0c;我说一句&#xff1a;培训出来的&#xff0c;优秀学员大有人在&#xff0c;我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配&#xff0c;是非常遗憾的事情。 最近&#xff0c;在网上看到这样一个留言&#xff0c;引发了程序员这个圈子不少的…

Python程序设计-第5章Python面向对象

第5章Python面向对象一.预习笔记 1.类的相关概念 类的定义&#xff0c;类对象&#xff0c;实例对象&#xff0c;类属性 类属性是跟类绑定的&#xff0c;如果要修改类的属性就必须使用类对象访问&#xff0c;只使用实例对象是无法修改的。 权限访问&#xff1a;name与age是公…

【每日随笔】手指训练 ( 产品需求探索、技术无关 | 手指训练作用 | 哪些人需要手指训练 | 手指操 | 手指康复训练器材 )

文章目录一、手指训练作用二、哪些人需要手指训练三、手指操四、手指康复训练器材产品需求探索 , 研究下手指训练的市场 , 前景 , 是否可以开发 ; 一、手指训练作用 手指训练作用 : 改善 上肢协调性手眼 协调性训练提高 手指 抓握 能力提高 手指 灵活性提高 上肢运动 准确性 和…

Linux进程间通信(system V共享内存)

共享内存原理 看上面这张图&#xff0c;其实只要是进程间通信都离不开让他们看到同一块资源(内存)&#xff0c;其实共享内存这里和动态库那里一样&#xff0c;都是要加载到共享区&#xff0c;共享内存提供者&#xff0c;是操作系统&#xff0c;操作系统要不要管理共享内存&…

Python环境搭建指南

Python能做太多有趣使用的事了&#xff0c;不仅可以做现在火热的人工智能、数据分析&#xff0c;还可以做爬虫、Web开发、自动化运维的事情。 随着Python为我们工作与生活带来更多的便捷后&#xff0c;很多人开始学习Python&#xff0c;关注Python的发展前景、薪资和职业素养的…

RabbitMQ——高级特性(SpringBoot实现)

本篇文章的内容与我之前如下这篇文章一样&#xff0c;只是使用技术不同&#xff0c;本篇文章使用SpringBoot实现RabbitMQ的高级特性&#xff01; RabbitMQ——高级特性_小曹爱编程&#xff01;的博客-CSDN博客RabbitMQ——高级特性&#xff1a;1、RabbitMQ高级特性&#xff1b;…

IDEA2021.3新建一个maven-archetype-webapp项目,发现在新建文件汇总,没有新建servlet文件选项

问题 我使用maven-webapp 模板新建了一个web项目&#xff0c;但是在新建文件的时候&#xff0c;发现没有servlet选项 解决 第一种&#xff1a;在pom中直接配置 <dependencies><dependency><groupId>javax.servlet</groupId><artifactId>java…

Linux进程信号产生以及捕捉

一.什么是信号 生活中&#xff0c;有哪些信号相关的场景呢&#xff0c;比如&#xff1a;红绿灯&#xff0c;闹钟&#xff0c;转向灯等等 1.这里我们要知道&#xff0c;你为什么认识这些信号呢&#xff0c;记住了对应场景下的信号&#xff0b;后续是有”动作“要你执行的 2.我们…

spring boot 项目打包镜像方式以及区分环境打包

springboot项目打包成docker镜像-贾玉珍-2023年2月8日方法一&#xff1a;将项目jar包手动推送到docker服务器上1.用maven对项目进行打包&#xff0c;打包成功后会有一个target目录&#xff0c;目录下有打好的项目jar包2.将jar包上传到服务器上&#xff0c;我用的是finalshell工…

Zabbix Agent item监控项讲解

前言 agent与snmp是Zabbix两种重要的监控方式&#xff0c;这一期主要介绍Zabbix Agent item监控项。。Zabbix agent分为主动代理、被动代理&#xff0c;配置item类型时&#xff0c;可以选择需要的类型&#xff1a; Zabbix agent &#xff1a;用于被动检查 Zabbix agent&…

【C语言进阶】结构体、位段、枚举和联合

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;C语言航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&a…

顶刊MS论文解读|数据驱动的动态定价和订购策略

作者&#xff1a;白静 金凯瑞 马玺渊 钟子俊编者按 本次解读的文章为“Data-Driven Dynamic Pricing and Ordering with Perishable Inventory in a Changing Environment”&#xff0c;于2022年发表在期刊 Management Science, 作者 N. Bora Keskin, Yuexing Li, Jing-Sheng …

推荐5款极大提高工作效率的办公软件!每个都是我精挑细选的

关于提高办公效率的相关软件&#xff0c;答主要把工作5年的独家秘方都拿出来了。分享的都是用过的且体验不错的软件&#xff0c;大多数是免费软件&#xff01; 按照使用场景&#xff0c;简单先分个类&#xff0c;分别是时间利用利器&#xff0c;流程优化软件&#xff0c;办公美…

论文投稿指南——中文核心期刊推荐(工程材料学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

重生之我是赏金猎人-SRC漏洞挖掘(一)-某SRC测试系统无脑Getshell

0x01 前言 https://github.com/J0o1ey/BountyHunterInChina 欢迎大佬们点个star 0x02 资产收集到脆弱系统 在某src挖掘过程中&#xff0c;本人通过ssl证书对域名资产进行了收集&#xff0c;通过计算域名对应ip段的权重 整理出其C段资产&#xff0c;进行了批量目录扫描 查看…

Spring Boot两种格式的配置文件,你都了解吗?

目录 前言 一、properties配置文件 1.1、语法格式 1.2、读取配置文件 1.3、缺点分析 2、yml配置文件 2.1、yml语法 2.1.1、注意&#xff1a;value值的单双引号 2.2、yml配置读取 2.3、yml配置的不同数据类型 2.4、yml配置对象 2.5、yml配置集合 3、面试&#xff1a…

2023年浙江道路运输安全员考试真题题库及答案

百分百题库提供道路运输安全员考试试题、道路运输安全员考试预测题、道路运输安全员考试真题、道路运输安全员证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 1.关于道路运输企业车辆技术管理机构的主要职责&#xff0c;在下列表述中最…

anaconda3文件夹被移动之后,如何操作可以复用原有conda环境

anaconda3文件夹被移动A-调整conda PATH地址B-更改.conda/environments.txt中的地址C-修改conda内的变量和每个环境的pip目录A-调整conda PATH地址 B-更改.conda/environments.txt中的地址 a. 优先切换到用户根目录 b. 查看隐藏conda目录 c. 编辑 vi .conda/environments.txt…