JavaScript-事件和事件对象

一.事件介绍

事件一般是用于浏览器和用户操作进行交互。最早是IE和Netscape Navigator中出现,作为分担服务器端运算负载的一种手段。直到几乎所有的浏览器都支持事件处理。而DOM2级规范开始尝试以一种复合逻辑的方式标准化DOM事件。IE9、Firefox、Opera、Safari和Chrome全都已经实现了“DOM2级事件”模块的核心部分。IE8之前浏览器仍然使用其专有事件模型。
JavaScript有三种事件模型:内联模型、脚本模型和DOM2模型。

1.鼠标事件,页面所有元素都可触发

click:当用户单击鼠标按钮或按下回车键时触发。

input.onclick = function () {alert('Mumu');
};

dblclick:当用户双击主鼠标按钮时触发。

input.ondblclick = function () {alert('Mumu');
};

mousedown:当用户按下了鼠标还未弹起时触发。

input.onmousedown = function () {alert('Mumu');
};

mouseup:当用户释放鼠标按钮时触发。

input.onmouseup = function () {alert('Mumu');
};

mouseover:当鼠标移到某个元素上方时触发。

input.onmouseover = function () {alert('Mumu');
};

mouseout:当鼠标移出某个元素上方时触发。

input.onmouseout = function () {alert('Mumu');
};

mousemove:当鼠标指针在元素上移动时触发。

input.onmousemove = function () {alert('Mumu');
};

2.键盘事件

keydown:当用户按下键盘上任意键触发,如果按住不放,会重复触发。

   onkeydown = function () {alert('Mumu');};

keypress:当用户按下键盘上的字符键触发,如果按住不放,会重复触发。

onkeypress = function () {alert('Mumu');
};

keyup:当用户释放键盘上的键触发。

onkeyup = function () {alert('Mumu');
};

3.HTML事件

load:当页面完全加载后在window上面触发,或当框架集加载完毕后在框架集上触发。

window.onload = function () {alert('Mumu');
};

unload:当页面完全卸载后在window上面触发,或当框架集卸载后在框架集上触发。

window.onunload = function () {alert('Mumu');
};

select:当用户选择文本框(input或textarea)中的一个或多个字符触发。

   input.onselect = function () {alert('Mumu');};

change:当文本框(input或textarea)内容改变且失去焦点后触发。

input.onchange = function () {alert('Mumu');
};

focus:当页面或者元素获得焦点时在window及相关元素上面触发。

input.onfocus = function () {alert('Mumu');
};

blur:当页面或元素失去焦点时在window及相关元素上触发。

input.onblur = function () {alert('Mumu');};

submit:当用户点击提交按钮在元素上触发。

form.onsubmit = function () {alert('Mumu');
};

reset:当用户点击重置按钮在元素上触发。

form.onreset= function () {alert('Mumu');};

resize:当窗口或框架的大小变化时在window或框架上触发。

window.onresize = function () {alert('Mumu');
};

scroll:当用户滚动带滚动条的元素时触发。

window.onscroll = function () {alert('Mumu');
};
         var input = document.querySelector("input");var showcode = document.createElement("div");showcode.style.width = "200px";showcode.style.height = "200px";showcode.style.backdroundColor = 'rgba(0,0,0,0.6)';showcode.style.position = "fixed";showcode.style.left = "200px";showcode.style.top = "200px";document.body.appendChild(showcode);input.onkeydown =function(event){showcode.innerHTML=event.key;}
二、实现打字小游戏
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>Document</title><link rel="stylesheet" href="../css/tanchuang.css" /><script src="../js文件/popwindows.js"></script></head><style>#showCode {background-color: rgba(0, 0, 0, 0.4);text-align: center;width: 200px;height: 200px;position: fixed;left: 200px;top: 200px;line-height: 200px;font-size: 40px;color: aliceblue;}button {width: 80px;height: 30px;background-color: orange;border: none;}button:hover {background-color: rgb(134, 202, 247);}</style><body><div id="showCode"></div><button >开始</button><script>/* 键盘落下事件onkeydown键盘按下事件onkeypress键盘弹起事件onkeyup*/var score = 0;var startbtn = document.querySelector("button");var showcode = document.querySelector("div");/* 定义一个方法,随机生成一个大写字母,将这个字符的内容显示在div上面*/function randomCode() {var randomNum = 97 + parseInt(Math.random() * 26);var randomStr = String.fromCharCode(randomNum);var ucStr = randomStr.toUpperCase();showcode.innerHTML = ucStr;}/* 监听键盘输入事件获取输入的值,将值和当前内容进行比较 */document.body.onkeypress = function(event) {var keyCode = event.key.toUpperCase();var content = showcode.innerHTML;if (keyCode == content) {console.log("打字正确,得分加1");score++;randomCode();}};var fn10 = function() {Alert({title: "打字速度",content: "您每分钟能敲" + score + "单词",confirmDivfn: function() {score = 0;showcode.innerHTML = "";btnListen();},cancelfn: function() {showcode.innerHTML = "<h4>游戏结束</h4>";startbtn.style.display = "none";clearTimeout();}});};function btnListen() {startbtn.onclick = function() {var a = showcode.innerHTML;if (a == "") {randomCode();setTimeout(fn10, 10000);clearTimeout();}};}btnListen();/* setTimeout 每间隔十秒钟调用一次fn10函数  十秒等于一万毫秒 */</script></body>
</html>

tanchuang.css

* {margin: 0;padding: 0;box-sizing: border-box;
}
.shade {display: flex;top: 0;left: 0;width: 100%;height: 600px;background-color: rgba(0, 0, 0, 0.5);
}
.shade .popwindows {width: 400px;height: 300px;background-color: #f2f2f2;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);display: flex;flex-direction: column;
}
.shade .popwindows .tltle {position: relative;display: flex;flex-direction: row;align-items: center;width: 100%;flex: 1;border-bottom: 1px solid #bdb8b8;
}
.shade .popwindows .tltle .text {flex: 1;float: left;padding-left: 10px;font-family: "微软雅黑";
}
.shade .popwindows .tltle .exit {width: 30px;height: 30px;background-image: url("../js学习/imag/cuohao.png");background-repeat: no-repeat;background-position: center center;background-size: 20px auto;float: right;margin-right: 10px;
}
.shade .popwindows .content {width: 100%;flex: 3;line-height: 40px;font-size: 13px;margin-left: 10px;font-family: '宋体';
}
.shade .popwindows .endbtn {display: flex;justify-content: center;align-items: center;width: 100%;flex: 1;border-top: 1px solid #bdb8b8;
}
.shade .popwindows .endbtn .btn{width: 80px;text-align: center;height: 30px;line-height: 30px;font-size: 15px;background-color: #979797;
}
.shade .popwindows .endbtn .btn:nth-child(1){margin-right: 10px;
}
.shade .popwindows .endbtn .btn:nth-child(2){margin-right: 10px;
}
.shade .popwindows .endbtn .btn:hover{background-color: #f68c4e;
}

popwindows.js

/*
var args = {
title:"温馨提示",
content:"是否添加一个页面生成一个蓝色div",
confirmDivfn:function(){var a = document.createElement("div");a.style.backgroundColor = "red";a.style.width = "100px";a.style.height = "100px";body.appendChild(a);
},
cancelfn:function(){body.removeChild(shade);}
}
*/
function Alert(args) {var shade = document.createElement("div");shade.className = "shade";shade.innerHTML =`<div class="popwindows"><div class="tltle"><div class="text"><h3>` +args.title +`</h3></div><div class="exit"></div></div><div class="content"><h4>` +args.content +`</h4></div><div class="endbtn"><div class="btn confirm">确定</div><div class="btn cancel">取消</div></div></div>`;document.body.appendChild(shade);var cancel = document.querySelector(".btn.cancel");var confirmDiv = document.querySelector(".btn.confirm");confirmDiv.onclick = function() {/* 此处输入确认事件的内容*/args.confirmDivfn();document.body.removeChild(shade);};cancel.onclick = function() {/* 此处输入取消事件的内容 */args.cancelfn();document.body.removeChild(shade);};};

JavaScript-事件和事件对象、实现键盘打字小游戏相关推荐

  1. JavaScript打字小游戏

    上半年自学了JavaScript,然后就做了个打字小游戏玩玩. 功能模块:                                         程序设计: 1.可选择游戏时间,显示倒计时 ...

  2. 用javascript编写的打字小游戏

    最近在学ExtJs,看了蔡世友老师的视频课程,在第十课中留了一个小作业,就是用javascript写一个打字小游戏,于是按照前几课所讲的知识自己编写了一个. 一.需求:网页上在随机位置会出现字母,字母 ...

  3. 原生JS实现一个简单的打字小游戏

    原生JS实现一个简单的打字小游戏 利用javascript制作一个简单的打字小游戏 之前写了一个贪吃蛇小游戏好像反响不错 今天我来写一个比贪吃蛇更low更简单的打字小游戏 打字小游戏原理 接下来咋们直 ...

  4. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) 代码实现 窗口类 小车类 玩家类 电脑类 赛道类 小树类 打字类 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) ...

  5. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(完结篇) 资源下载 完整代码 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) Python 打字小游戏开发,来体验不一样的 ...

  6. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇)

    Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第一篇) 前言 游戏素材准备 游戏项目结构 项目里面的类说明 Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇) Python ...

  7. 原生js实现的金山打字小游戏

    首先先来看一下效果图 如果感兴趣的就来看一下Js源码吧 //计分板 var board = {dom: document.getElementById("score"),maxLo ...

  8. JAVA实现打字小游戏

    目录 一.效果 二.教程 三.代码 一.效果 首先我们先看效果,左上角的分数是用来记录我们打对了多少字母.字母是从上面开始往下落.每打对一个字母,分数增加,增加到一定分数后,字母下落的速度也会增加.( ...

  9. java实验2总结心得,打字小游戏JAVA实验总结及心得体会

    篇一:扫雷游戏实验报告 课程设计 班 级: 姓 名: 学 号: 指导教师: 成 绩: 电子与信息工程学院信息与通信工程系 目录 1.任务概述------------------------------ ...

最新文章

  1. 4.01~~Median
  2. Linux之du df free:du文件大小 df分区使用 free内存
  3. 【多态】向上转型调用方法的规则
  4. 字符串hash(一)
  5. 工作252:uniapp--实战--uview---tabber
  6. 【qduoj - 夏季学期创新题】骑士游历(递推dp)
  7. LeetCode 713. 乘积小于K的子数组(滑动窗口)
  8. 【Flink-未解决】 FLink TaskManager with id is no longer reachable
  9. 循环,数组,函数作业
  10. sqlserver数据库备份
  11. 自闭症患者很难读懂他人情绪?情绪机器人来帮忙
  12. 手机端主图在哪里设置_原来华为手机灭屏也能看时间,操作方法非常简单,1分钟学会...
  13. java基础循环 for 、switch 、while 、do while、
  14. dubbo yml配置_Dubbo常见配置说明
  15. 二维 稳态边界层问题MATLAB,第三章 边界层理论.ppt
  16. PRINCE2的含金量如何?
  17. 【北京迅为】i.MX6ULL终结者硬件资源说明
  18. 光耦重要参数与常用设计注意事项
  19. 攻防世界 logmein(重温,重点在于怎么写出脚本)
  20. 前端程序员发展必备工具

热门文章

  1. 和平精英电脑版服务器未响应,和平精英电脑版为什么卡顿 电脑版卡顿解决方法...
  2. 利用Java实现的图片中文字识别,你学会了吗?
  3. /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵
  4. IT桔子文飞翔:人工智能行业发展趋势
  5. 洛谷P3975【天津省选2015】(后缀自动机DP)
  6. STM32F4xx时钟配置的三种方法
  7. 关键链项目管理方法的缓冲区管理
  8. 函数mmap()的使用
  9. endnote导入知网文献
  10. 供配电系统中的PE、N、PEN线各指的是什么?怎么区别和使用?