一:原生js事件绑定

1.开关灯案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1 {
height: 400px;
width: 400px;
border-radius: 50%;
}
.bg_black {
background-color: black;
}
.bg_red {
background-color: red;
}
</style>
</head>
<body>
<div id="d1" class="c1 bg_red bg_black"></div>
<button id="d2">变色</button>
<script>
<!--给d2按钮绑定事件-->
// 先找到d2按钮
let btnEle = document.getElementById('d2')
// 拿到d1标签
let divEle = document.getElementById('d1')
// 绑定点击事件
btnEle.onclick = function () {
// 动态修改div标签的类属性(有则移出无则添加)
divEle.classList.toggle('bg_red')
// 用户点击按钮 判断div内是否有bg_red属性
}
</script>
</body>
</html>

2.input框获取焦点失去焦点案例
1.什么是获取焦点与失去焦点?
获取焦点	: 鼠标放在input框内
失去焦点 : 鼠标移出input框内
2.初级版input框 获取焦点与失去焦点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" value="欢迎光临 《恒运集团》" id="d1"> <script>
// 先找到input框id
let iEle = document.getElementById('d1')
// 获取焦点事件(鼠标放在input框内)
iEle.onfocus = function () {
// 将input框内部的值去除
iEle.value = ''
// 点value就是获取 符号赋值就是设置
}
// 失去焦点事件(鼠标移出input框内)
iEle.onblur = function () {
// 给input标签重写赋值
iEle.value = '欢迎下次光临 《恒运集团》'
}
</script>
</body>
</html>

3.注意:
iEle.value		 : 获取属性值
iEle.value = '' : 修改值属性(设置)
4.进阶版 input框实时展示当前时间
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" id="d1">
<script>
// 获取标签id
let inputEle = document.getElementById('d1')
// 1 访问页面之后 将访问的时间展示到input框中
function showTime() {
// 生成日期对象
let currentTime = new Date();
// 设置赋值属性 Date转成当地时间
inputEle.value = currentTime.toLocaleString()
}
// 每隔一秒执行一次函数
setInterval(showTime, 1000)
</script>
</body>
</html>

5.终极版 input框实时展示当前时间(增加 按钮 开 关)
6.需求
// 1 访问页面之后 将访问的页面展示到input框中
// 2 动态展示当前时间
// 3 页面上加两个按钮 一个开始 一个结束
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#d1 {
text-align: center;
}
</style>
</head>
<body>
<input type="text" id="d1" style="display: block;height: 50px;width: 200px">
<button id="d2">开始</button>
<button id="d3">结束</button> <script>
// 先定义一个全局存储定时器的变量
let t = null
// 获取标签d1
let inputEle = document.getElementById('d1')
// 获取标签d2
let startBtnEle = document.getElementById('d2')
// 获取标签d3
let endBtnEle = document.getElementById('d3') // 1 访问页面之后 将访问的时间展示到input框中
function showTime() {
// 生成日期对象
let currentTime = new Date();
// 设置赋值属性 Date转成当地时间
inputEle.value = currentTime.toLocaleString()
}
// 开始执行实时展示时间
startBtnEle.onclick = function () {
// 判断t是否为空(为空执行 不为空不执行)取反
if(!t){
// 每隔一秒执行一次函数
t = setInterval(showTime, 1000) // 每次点击一次就会开设一个定时器 而t只指代最后一个
// 定时器赋值给全局变量
}
} // 停止展示实时时间
endBtnEle.onclick = function () {
// 清除t指代的定时器
clearInterval(t)
t = null
}
</script>
</body>
</html>

7.省市联动 现实选择省市地址
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<select name="" id="d1">
// selected : 选择 disabled : 禁用 // 提示第用户选择
<option value="" selected disabled>--请选择省--</option> // 选项
</select> <select name="" id="d2"></select> <script>
// 获取标签d1(省)
let proEle = document.getElementById('d1')
// 获取标签d2(市)
let cityEle = document.getElementById('d2')
// 先模拟省市数据
data = {
"河北": ["廊坊", "邯郸",'唐山'],
"北京": ["朝阳区", "海淀区",'昌平区'],
"山东": ["威海市", "烟台市",'临沂市'],
'上海':['浦东新区','静安区','黄浦区'],
'深圳':['南山区','宝安区','福田区']
};
// 选for循环获取省
for(let key in data){ // key : 省
// 将省信息做成一个个option标签 添加到第一个select框中
// 1 创建一个新的option标签
let opEle = document.createElement('option')
// 2 设置文本
opEle.innerText = key // <option>省</option>
// 3 设置value
opEle.value = key // <option value="省">省</option>
// 4 将创建的option标签添加到第一个select中展示
proEle.appendChild(opEle)
}
// <文本域变化事件> 当proEle内文本改变/更换 就自动触发change事件 切换与展示对应内容
proEle.onchange = function () {
// 先获取到用户选择的省
let currentPro = proEle.value // 省
// 获取对应的市信息
let currentCityList = data[currentPro] // 市 // 清空上一次市select中所有的option(防止用户选择不同的省 之前的市信息未清除 造成数据错乱)
cityEle.innerHtml = '' // 创建选择 并赋值 // 省选择后显示 提示用户选择市
let ciEle = "<option disabled selected>请选择</option>>"
// 设置文本标签 // 添加到cityEle市标签内
cityEle.innerHTML = ciEle // for循环省内的所有市 渲染到第二个select中
for (let i=0;i<currentCityList.length;i++){
// 获取value市
let currentCity = currentCityList[i]
// 1 创建新的option标签
let opEle = document.createElement('option')
// 2 设置文本
opEle.innerText = currentCity // <option>市</option>
// 3 设置value
opEle.value = currentCity // <option value='市'>市</option>
// 4 将创建好的option标签添加到第一个select中
cityEle.appendChild(opEle)
}
}
</script>
</body>
</html>

DOM(原生js事件绑定)的更多相关文章

  1. 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别

    一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...

  2. 原生js事件绑定

    一.JS事件 (一)JS事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresiz ...

  3. 兼容IE9以下和非IE浏览器的原生js事件绑定函数

    事件绑定函数的demo如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "htt ...

  4. js事件绑定细节说明

    javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...

  5. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  6. 原生js事件委托(事件代理)方法扩展

    原生js事件委托(事件代理)方法扩展: 通过Node底层原型扩展委托方法 /** * 事件委托方法 * @param eventName {string}:事件名称,如'click' * @param ...

  7. 原生js事件和jquery事件的执行顺序问题

    场景:近日,写前端页面时候,在针对输入框input操作时,用到了jquery的插件,插件中使用了jquery的focus()和blur()方法.但是同时,又需要在插件之外再针对输入框的获取焦点和失去焦 ...

  8. 移动终端学习2:触屏原生js事件及重力感应

    如今智能移动设备已经渗透到人们生活的方方面面,用户数量也在不断迅速增长(市场研究机构 eMarketer 在今年初发表的趋势报告中预测,2014年至2018年,中国智能手机用户从总人口的 38.3%增 ...

  9. js事件绑定的几种方式与on()、bind()的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载 一直不是很理解几种js事件绑定之间的区别与联系,今天百度了一下,在此做一总结: 1.如果只是简单的绑定一个事件,可以直接写在行内,点击执行一个函数, ...

  10. js课程 5-13 js事件绑定和鼠标事件注意事项有哪些

    js课程 5-13  js事件绑定和鼠标事件注意事项有哪些 一.总结 一句话总结:js代码的灵魂就是改变标签的属性和样式,就这两种. 1.js触发改的东西是哪两样? 属性和样式 2.js如何让页面用标 ...

随机推荐

  1. 使用pip的方式安装docker-compose

    # 国内开启pip 下载加速:http://mirrors.aliyun.com/help/pypi mkdir ~/.pip/ cat > ~/.pip/pip.conf <<'E ...

  2. 使用scrapy爬取长安有妖气小说

    目标网站:https://www.snwx3.com/txt/434282.html 第一章地址:https://www.snwx3.com/book/434/434282/92792998.html ...

  3. Docker安装集群rabbitMQ

    环境准备 Centos 7.5虚拟机三台: 192.168.102.128 192.168.102.130 192.168.102.131 以上虚拟机统一安装docker环境 三台机器分别配置如下所示 ...

  4. @input含义和用法

    @input :一般用于监听事件只要输入的值变化了就会触发input 示例: <div id="div1"> <input type="text&quo ...

  5. flood_it 方法记录

    心路历程 根据题面的描述,我们面临的问题无非是,每次将色块更新成什么颜色.又因为是从左上角开始更新,所以我的有了第一个想法. 将左上角的色块命名为"原色块". 对于每个色块,定义4 ...

  6. 『现学现忘』Git后悔药 — 32、revert撤销(一)

    目录 1.Git的三种后悔药 2.revert命令原理 3.revert命令的使用 (1)移除某次提交的修改 (2)revert命令说明 1.Git的三种后悔药 在Git中后悔药有三种:amend.r ...

  7. 【python】Ubuntu中多条命令的运行

    在模型训练时,往往需要消融实验,通常都是在一个程序运行结束后才再次手动运行下一个,不及时在电脑前可能无端浪费时间,因此需要让程序自动一个接一个去执行.受此启发,特了解了Ubuntu中多命令运行的内容. ...

  8. Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14

    目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...

  9. raid 5搭建部署

    raid 5搭建部署 软raid与备份 1.用四块磁盘做实验,三块盘搭建raid阵列组,有一块当作备份可以使用raid 5来搭建三块磁盘的阵列组 创建命令如下: [root@xiaohaoge ~]# ...

  10. RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    前言   buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪.  于是本篇就使用ubu ...