1.常用事件

  1.onclick   单击  应用场景:为按钮绑定

  2.ondbclick  双击

  3.onfocus    获得焦点

  4.onblur    失去焦点  应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.

  5.onchange   域的内容被改变  应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

  6.onkeydown   某个键盘按键被按下。    应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.

2.绑定事件的方式:

  1.在标签里直接写属性( onclick=showTime() )

  2.通过JS给标签绑定事件

3.this:代表当前的是触发事件的当前标签

2.案例:让文本框中动态显示时间

  思路:要在input框里显示当前时间,1.获取当前时间;2.把时间字符串填到input框里

   //1.获取当前时间
var now = new Date();
var nowStr = now.toLocaleString();
//2.把时间填写到字符串input框里
var txt1 = document.getElementById("txt1");
txt1.value = nowStr;

  为了页面动态显示时间,使用定时器,但是定时器要传入函数,所以将上述四行代码放入函数中。

  function showTime() {
//1.获取当前时间
var now = new Date();
var nowStr = now.toLocaleDateString();
//2.把时间填写到字符串input框里
var txt1 = document.getElementById("txt1");
txt1.value = nowStr;
}

  实现点击开始按钮动态显示时间,这里用到了setInterval()函数

  //点击开始按钮,时间动态显示
var start = document.getElementById("start");
start.onclick = function () {
//每个一秒执行一次
var t = setInterval(showTime,1000);
}

  上述代码出现的问题是,由于先暂停1秒,导致第一次显示时间需要两秒钟,第二次开始才开始1s显示一次,解决办法点击的时候先调用以下showTime()

  实现点击暂停按钮暂停时间,这里用到了clearInterval()函数。

   var start = document.getElementById("start");
start.onclick = function () {
showTime()
//每个一秒执行一次
var t = setInterval(showTime,1000);
} var end = document.getElementById("end");
end.onclick = function () {
clearInterval(t)
}

  出现的问题,点击暂停按钮无法实现暂停,因为t不是全局变量,所以在end中无法获取,解决办法将t定义在函数外面,这样就可以实现暂停啦!

  本例子中最优价值的地方来了啊,在开始暂停都实现之后,连续点击两次开始以上,再点击暂停又无法实现暂停功能了。。。

  原因在于,每点击一次开始按钮,定时器都会把ID赋值给全局变量,t永远保持最新的定时器,页面上出现了多个定时器,清除的时候只清除最后一个。

  解决办法:判断t是否有定时器的ID,如果定时器非undefined,则说明有定时器,跳过setInterval这个步骤。

  这里还有一个问题,clearInterval(t);清除的是t对应的定时器,t的值还是在的,造成了暂停之后再点击开始,时间不动了。

  解决办法:就是让t再次进入if中,可以在clearInterval之后,设置t为undefined。 

   var start = document.getElementById("start");
start.onclick = function () {
showTime()
//每个一秒执行一次
if(t === undefined){
t = setInterval(showTime,1000);
}
} var end = document.getElementById("end");
end.onclick = function () {
clearInterval(t); //clearInterval(t) 清除的是t对应的定时器,t的值还是在的,造成了暂停之后再点击开始,时间不动了。
t = undefined; //就是让t再次进入if中,可以在clearInterval之后,设置t为undefined
}

完整的代码:

<input type="text" id="txt1">
<input type="button" value="开始" id="start">
<input type="button" value="暂停" id="end">
<script>
function showTime() {
//1.获取当前时间
var now = new Date();
var nowStr = now.toLocaleString();
//2.把时间填写到字符串input框里
var txt1 = document.getElementById("txt1");
txt1.value = nowStr;
}
var t = undefined;
//点击开始按钮,时间动态显示
var start = document.getElementById("start");
start.onclick = function () {
showTime()
//每个一秒执行一次
if(t === undefined){
t = setInterval(showTime,1000);
} } var end = document.getElementById("end");
end.onclick = function () {
clearInterval(t);
t = undefined;
}
</script>

    补充: setTimeout("JS语句",时间毫秒)clearTimeout()  setInterval()  clearInterval()

       setInterval(),每个多少毫秒执行一次函数,循环执行;  clearInterval(),结束循环

          

JS基础语法之DOM02(事件)的更多相关文章

  1. JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)

    第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...

  2. 【JS基础语法】---学习roadmap---6 parts

    JS基础语法---roadmap Part 1 - 2: Part 3 - 4:   Part 5 - 6

  3. 9.12/ css3拓展、js基础语法、程序基本知识、数据类型、运算符表达方式、语句知识点

    css3拓展: <display:none>  将某个元素隐藏       <visibility:hidden>  也是将某个元素隐藏 <display:block&g ...

  4. JS基础语法(二)

    目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...

  5. JavaScript01 js基础语法,数据类型

    JavaScript的概述: 1.组成 三部分组成 ecmaScript 基础语法 (es5) dom document object model 文档对象模型 (操作html文档内容) bom bo ...

  6. JavaScript学习笔记 - 进阶篇(1)- JS基础语法

    前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...

  7. Vue.js基础语法(一)

    vue学习的一系列,全部来自于表哥---表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 前言: 前端解析数 ...

  8. node.js基础 1之 HTTP事件回调进阶(HTTP模块)

    HTTP概念进阶 1. 什么是回调? 回调是异步编程时的基础,将后续逻辑封装成起始函数的参数,逐层嵌套 2. 什么是同步/异步? 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯 ...

  9. 二、JavaScript语言--JS基础--JavaScript进阶篇--事件响应

    1.什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户 ...

随机推荐

  1. Flutter 集成到现有iOS工程

    前沿 由于我司已经有自己的App,flutter属于技术引进的一部分,也不太可能重新启动一个项目,因此目前我们是将flutter模块形式注入我们的App之中.即:将flutter模块集成到现在有iOS ...

  2. 威布尔weibull distribution

    data = wblrnd(0.5,0.8,100,1); 生成威布尔随机函数,尺寸参数为0.5,形状参数为0.8,生成数列100行,一列: parmhat = wblfit(data) 对data的 ...

  3. tomcat的webapps下面包含五个自带的项目

    1.docs tomcat的介绍和操作文档等 2.examples 小程序示例 3.host-manager host管理 4.manager(重点) 进行 Server Status 和 Appli ...

  4. php 三种文件下载的实现

    第一种:直接添加文件下载的绝对路径连接 //如:我有一个文件在demo.xx.cn/demo.zip <button> <a href = "http://demo.xx. ...

  5. SQL 标量函数-----日期函数 day() 、month()、year() 转载

      select day(createtime) from life_unite_product     --取时间字段的天值 select month(createtime) from life_u ...

  6. SpringMVC的孪生兄弟WebFlux

    一.入门文字介绍 官方口水话简短翻译: Spring WebFlux是一个非阻塞的Web框架,用于利用多核,短时间可一处理大量并发连接. 非阻塞式 在servlet3.1提供了非阻塞的API,WebF ...

  7. Bubble Cup 12 - Finals [Online Mirror, unrated, Div. 1] E. Product Tuples

    题意略,题解生成函数练习题,1+(q-ai)x卷积即可,线段树优化(类似分治思想) //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pra ...

  8. Windos DNS Client 缓存

    要查看 DNS 缓存,请在命令提示符下键入 ipconfig /displaydns. 要从 DNS 缓存中删除该项,请在命令提示符下键入 ipconfig /flushdns. ipconfig.e ...

  9. django2 restframework put和delete http404错误

    url要写好 比如 ,最后的/一定要加,否则401 'http://127.0.0.1:8000/persons/' + person.id + '/'

  10. (36)C# COM交互

    调用DLL [DllImport("standerMFC.dll")] public static extern int PReadUID(ref HHFC_SET stru); ...