【JavaScript学习】-事件响应,让网页交互
什么是事件:
JavaScript 创建动态页面。事件是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件。
比如说,当用户单击按钮或者提交表单数据时,就发生一个鼠标单击(onclick)事件,需要浏览器做出处理,返回给用户一个结果。
主要事件表:
事件1:onclick
说明:onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件。同时onclick事件调用的程序块就会被执行,通常与按钮一起使用。
实例代码:比如,我们单击按钮时,触发 onclick 事件,并调用openwin()函数,代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>单击事件 </title> <script type="text/javascript"> function openwin(){ window.open('http://www.cnblogs.com/Lohasworld/','_blank','height=600,width=400,top=100, toolbar=no,left=0,menubar=no,scrollbars=no,status=no');} </script> </head> <body> <form> <input name="点击我" type="button" value="点击我" onclick="openwin()"/> </form> </body> </html>
事件2:onmouseover
说明:鼠标经过事件,当鼠标移到一个对象上时,该对象就触发onmouseover事件,并执行onmouseover事件调用的程序。
实例代码: 比如,当鼠标经过"确定"按钮后,调用message()函数,弹出消息对话框。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> 鼠标经过事件 </title> 6 <script type="text/javascript"> function message(){ confirm("请输入密码后,再单击确定!"); } </script> </head> <body> <form> 密码:<input name="password" type="password" > <input name="确定" type="button" value="确定"onmouseover="message()"/> 15 </form> </body> </html>
事件3:onmouseout
说明:鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。
实例代码:比如,当鼠标移开"点击我"的按钮时,调用message()函数,弹出消息对话框。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>鼠标移开事件 </title> <script type="text/javascript"> function message(){ alert("不要移开,点击后进入作者的博客园!"); } </script> </head> <body> <form> <a href="http://www.cnblogs.com/Lohasworld/" onmouseout="message()">点击我</a> </form> </body> </html>
事件4:光标聚焦事件(onfocus)
说明:当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行。
实例代码:比如,当下拉列表得到焦点时,调用message()函数,就弹出对话框“"请选择,您现在的职业!”。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> 光标聚焦事件 </title> <script type="text/javascript"> function message(){ alert("请选择,您现在的职业!"); } </script> </head> <body> 请选择您的职业:</br> <form> <select name="career" onfocus="message()"> <option>学生</option> <option>教师</option> <option>工程师</option> <option>演员</option> <option>会计</option> </select> </form> </body> </html>
注:光标聚焦不是指鼠标箭头来到某处,而是点击某处
事件5:失焦事件(onblur)
说明:onblur事件与onfocus是相对事件,当光标离开当前获得聚焦对象的时候,触发onblur事件,同时执行被调用的程序。
实例代码:比如,当光标从密码文本框离开时,触发onblur 事件,调用message()函数。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> 失焦事件 </title> <script type="text/javascript"> function message(){ alert("请确定已输入密码后,在移开!"); } </script> </head> <body> <form> 用户:<input name="username" type="text" value="请输入用户名!" onblur="message()" > 密码:<input name="password" type="text" value="请输入密码!" onblur="message()" > </form> </body> </html>
事件6:内容选中事件(onselect)
说明:选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。
实例代码:比如,当选中个人简介文本框中文字时,触发onselect事件,并弹出对话框。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> 内容选中事件 </title> <script type="text/javascript"> function message(){ alert("您触发了选中事件!"); } </script> </head> <body> <form> 个人简介:<br> <textarea name="summary" cols="60" rows="5" onselect="message()">请写入个人简介,不少于200字!</textarea> </form> </body> </html>
事件7:文本框内容改变事件(onchange)
说明:选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。
实例代码:比如,改变文本框内容时,调用message()函数,弹出对话框“您改变了文本内容!”。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> 文本框内容改变事件 </title> <script type="text/javascript"> function message(){ alert("您改变了文本内容!"); } </script> </head> <body> <form> 个人简介:<br> <textarea name="summary" cols="60" rows="5" onchange="message()">请写入个人简介,不少于200字!</textarea> </form> </body> </html>
注:改变后光标离开(点击其他地方)才能触发事件
事件8:加载事件(onload)
说明:事件会在页面加载完成后,立即发生,同时执行被调用的程序。
实例代码:比如,加载页面时,弹出对话框“加载中,请稍等…”。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> 加载事件 </title> <script type="text/javascript"> function message(){ alert("加载中,请稍等…"); } </script> </head> <body onload="message()"> 欢迎学习JavaScript。 </body> </html>
注:1. 加载页面时,触发onload事件,事件写在<body>标签内。
2. 加载页面,可以理解为打开一个新页面。
事件9:卸载事件(onunload)
说明:当用户退出页面时(页面关闭、页面刷新等),触发onUnload事件,同时执行被调用的程序。
实例代码:比如,关闭页面时,弹出对话框“您确定离开网页吗?”。代码如下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> 卸载事件 </title> <script type="text/javascript"> window.onunload = onunload_message; function onunload_message(){ alert("您确定离开该网页吗?"); } </script> </head> <body onunload="onunload_message()"> 欢迎共同学习Javascript^_^ </body> </html>
注:不同浏览器对onunload事件支持不同。(我用此段代码试了一下我电脑上所有的浏览器:IE11,Chrome50.0.2661.102 m,Microsoft Edge25.10568.0.0)
/*然后我发现事情跟我预料的不一样【惊奇脸】,事情是这样的:
我直接新建了一个文本文档,把代码复制到里面,并把文件后缀名强制改成了.html(因为懒得打开我电脑装的DW这么大型的软件,而且我电脑配置不是很高,现在已经打开很多软件了),用三个浏览器打开这个页面均出现了一段乱码,但是JS的事件执行了,即关闭页面时显示提示消息了,只不过提示消息也是一段乱码。
于是我考虑,可能出现这样的问题:因为只有中文的显示有问题,包括页面中显示的文字里也只有中文变成乱码,英文没问题,所以我猜测记事本的中文格式或者编码与html的不太兼容balabala
考虑到这,我用DW打开了这个文件,果然代码里所有中文都变成了乱码,修改完以后,我继续用三个浏览器调试。
*/
IE11:在允许网页运行脚本的情况下,刷新及关闭页面都能弹出提示消息
Chrome50.0.2661.102 m:并不能弹出提示消息,翻遍了设置也没找到关于禁止脚本的选项
Microsoft Edge25.10568.0.0:同上
综合实例训练:
说明:使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击等于号,能在第三个输入框给出2个整数的加减乘除运算结果。
思路要点:1.body中一共有四个input输入框:三个的type是text,一个是button。还有一个选择列表,设置四个option;
2.给“=”button设置一个onclick事件,点击触发count函数
3. 获取两个输入框中的值和获取选择框的值:document.getElementById("id").value
给结果输入框赋值:document.getElementById("id").value=1
4.获取通过下拉框来选择的值来改变加减乘除的运算法则:
<select> <option></option> </select>
5.用switch来判断运算法则:通过判断上面第3点里面获取到的选择框的值
代码:
<!DOCTYPE html> <html> <head> <title> 事件</title> <script type="text/javascript"> function count(){ var txt1=parseInt(document.getElementById("txt1").value); var txt2=parseInt(document.getElementById("txt2").value); var select = document.getElementById('select').value; var result; switch(select) { case '+': result=txt1+txt2; break; case '-': result=txt1-txt2; break; case '*': result=txt1*txt2; break; case '/': result=txt1/txt2; break; } document.getElementById("fruit").value = result; } </script> </head> <body> <input type="text" id="txt1"/> <select id="select"> <option value='+'>+</option> <option value='-'>-</option> <option value='*'>*</option> <option value='/'>/</option> </select> <input type="text" id="txt2"/> <input type="button" value="=" onClick="count()"/> <input type="text" id="fruit"/> </body> </html>
BUG以及修改:
问题1:输入数字后,点击等于号没反应
思考原因:可能出现问题的有几个点:“=”按钮的onclick事件未设置好;未成功得到txt1和txt2的值导致运算无结果;算出结果后未对结果输入框成功赋值;
解决方法:逐点检查,发现获取txt1和txt2的值时,“document.getElementById("id").value”语句缺少“document.”,添加后运行成功。
问题2:输入1+1后,得到11;输入12+21,得到1221
思考原因:输入1+1得到11,是因为加法运算单纯把字符串相连,说明txt1和txt2获取到的值是字符串而不是数字
解决方法:通过parseInt()函数,可以将字符串转换为数值
OK,今天这节关于JS事件响应的学习就到这啦,边学边做笔记印象很深刻~
代码量:197行
时间:2016.5.24
【JavaScript学习】-事件响应,让网页交互的更多相关文章
- JavaScript高级用法一之事件响应与网页交互
综述 本篇的主要内容来自慕课网,事件响应与网页交互,主要内容如下 1 什么是事件 2 鼠标单击事件( onclick ) 3 鼠标经过事件(onmouseover) 4 鼠标移开事件(onmouseo ...
- 浅谈JavaScript的事件响应
原文出处: Christian Heilmann 译文出处:Chajn Science 每当猴子们问我JavaScript和DOM里啥东西最牛逼时,我都会一巴掌打回去:卧槽还用问么当然是事件响应了 ...
- JS学习-事件响应小结-简单的计算器
<!DOCTYPE html> <html> <head> <title> 事件</title> <script type=" ...
- JS事件-让网页交互
什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单击 ...
- JavaScript事件响应的基础语法总结
1.onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件.同时onclick事件调用的程序块就会被执行,通常与按钮一起使用 //例子 <html> <head> ...
- 学习笔记1--响应式网页+Bootstrap起步+全局CSS样式
一.学习之前要了解一些背景知识: 在2g时代,3g时代,4g时代,早期的网页浏览设备,功能机,智能机.(本人最喜欢的透明肌,和古典黑莓机) 1.什么是响应式网页? Responsive Web Pag ...
- Qt和JavaScript使用QWebChannel交互一——和Qt内嵌网页交互
Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 目录 Qt和JavaScript使用QWebChannel交互一--和Qt内嵌网页交互 前言 一.效果 二.实现过程 ...
- JavaScript学习06 JS事件对象
JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...
- Legolas工业自动化平台入门(三)交互事件响应动作
在上一篇Legolas工业自动化平台入门(二)数据响应动作 一文中,我们介绍了"动作"相关内容,了解到"动作"分为多种,各种动作的添加方式相同,但是应用方式各自 ...
随机推荐
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十四)谈谈写博客的原因和项目优化
阶段总结 又到了优化篇的收尾阶段了,这其实是一篇阶段总结性的文章,今天是4月29号,距离第一次发布博客已经两个月零5天,这两个多月的时间,完成了第一个项目ssm-demo的更新,过程中也写了33篇博客 ...
- 解析Excel文件并把数据存入数据库
前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中.花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致 ...
- 异步工作流控制-condCall
在JavaScript编程中,异步操作一直是一个问题,回调是一种深层次的嵌套处理方式,我们也可以把嵌套处理转为直线处理以简化异步处理.有过prolog和erlang编程了解的同学可能对模式匹配有深刻的 ...
- Jdk1.6 JUC源码解析(12)-ArrayBlockingQueue
功能简介: ArrayBlockingQueue是一种基于数组实现的有界的阻塞队列.队列中的元素遵循先入先出(FIFO)的规则.新元素插入到队列的尾部,从队列头部取出元素. 和普通队列有所不同,该队列 ...
- struts-config.xml的配置
1.<struts-config> 元素 <struts-cofnig> 元素是 Struts 配置文件的根元素.<struts-config> 元素有 8 个子 ...
- 【JAVAWEB学习笔记】14_response
HttpServletResponse 学习目标 案例一.完成文件下载 案例二.生成验证码(了解) 1.HttpServletResponse概述 我们在创建Servlet时会覆盖service()方 ...
- JUnit之断言assert
一.简介 JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活: 使用全新的断言语法:assertThat,结合Ham ...
- Angular2 关于*ngFor 嵌套循环
在项目开发中拿到的数据是这样的,要循环遍历出来.可是在ng2中好像不能直接遍历Object datas: any = [ { num: 1, date: "2017-04-12", ...
- python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo
import time from selenium import webdriver browser = webdriver.Safari() browser.get('http://weibo.co ...
- vue实例的几个概念
1.构造器 vue应用都是通过vue构造函数创建实例来启动的,在创建vue实例时需要传入一个options对象,该对象可以包含数据.模板.挂在元素.方法.生命周期钩子等选项: var vm = new ...