键盘事件

键盘事件

    1. onkeydown 键盘按下

        触发条件:当键盘被按下的时候触发

        用法:

document.onkeydown = function (e) {
     console.log("键盘按下")
}

    2. onkeyup 键盘抬起

        触发条件:当键盘被抬起的时候触发

        用法:

document.onkeyup = function (e) {
      console.log("键盘抬起")
}

    3. onkeypress 字符输入

        触发条件:当有字符输入的时候触发。 当字符键被按下的时候触发

        用法:

document.onkeypress = function (e) {
	if (e.keyCode == 13) {
		console.log("点击回车了")
	}
	console.log("有字符输入")
}

事件对象:

    e.key 键盘键对应的字符

    e.keyCode 键盘键对应的编码 是一个数字

常用的编码:  13 回车 32 空格 37 ← 38 ↑ 39 → 40 ↓


尝试给一个div绑定键盘事件

    如果想让一个div绑定键盘事件,直接绑定键盘事件是不行的,div元素不像是表单元素input等可以直接添加,必须让div先获取焦点,这样引出了一个标准属性  tabIndex="xxx(里面是数字 代表顺序)"

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
		}
		#box {
			width: 400px;
			height: 400px;
			margin: 0 auto;
		}
	</style>
</head>
<body>
	<div id="box" tabIndex="1"></div>
	<input type="text" id="input" tabIndex="2">
	<script type="text/javascript">
		// 获取元素
		var box = document.getElementById("box");
		var input = document.getElementById("input");
		// 给box绑定键盘事件
		box.onkeydown = function() {
			console.log("键盘按下了")
		}

		// onfocus 
		input.onfocus = function() {
			console.log("获取焦点")
		}
		// onblur
		input.onblur = function() {
			console.log("失去焦点")
		}

		// 结论: 如果想要div元素绑定键盘事件, 必须让div先获取焦点, 绑定方式: tabIndex="x"
	</script>
</body>
</html>

tabIndex属性

    该属性是每一个元素都具备的html标准属性。该属性的值是一个数字。该数字决定用户按下tab键时,光标(焦点)的切换顺序。 div上的键盘事件必须在div具备tabindex属性值的时候,并且还得被选中才可以触发。

    tabIndex 是html的标准属性。每个元素都可以添加。当用户失去鼠标的时候, 可通过键盘上的tab键来切换获取页面上元素的焦点。

    tab键                 是按照tabIndex的值的大小顺序顺序切换元素焦点。

    tab + shift键      是按照tabIndex的值的大小顺序逆序切换元素焦点

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
		}
	</style>
</head>
<body>
	<ul id="list">
		<li tabIndex="9">1</li>
		<li tabIndex="8">2</li>
		<li tabIndex="7">3</li>
		<li tabIndex="6">4</li>
		<li tabIndex="5">5</li>
		<li tabIndex="4">6</li>
		<li tabIndex="3">7</li>
		<li tabIndex="2">8</li>
		<li tabIndex="1">9</li>
	</ul>
</body>
</html>


实现一个按1234567键弹钢琴的的demo


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
		}
		#list {
			width: 700px;
			height: 400px;
			margin: 0 auto;
		}
		li {
			float: left;
			list-style: none;
			width: 100px;
			height: 100%;
			border: 1px solid blue;
			box-sizing: border-box;
			border-right: none;
		}
		#list li:last-child {
			border: 1px solid blue;
		}
	</style>
</head>
<body>
	<ul id="list">
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
	</ul>
	<audio id="audio" autoplay></audio>
	<script type="text/javascript">
	// 获取所有li
	var lis = document.getElementsByTagName("li");
	var audio = document.getElementById("audio")
	// 添加键盘事件
	document.onkeydown = function(e) {
		// 查看时间对象中的哪个属性可以获取输入的字符
		// console.log(e.key)
		// 进行判定
		switch (e.key) {
			case "1":
			case "2":
			case "3":
			case "4":
			case "5":
			case "6":
			case "7":
				lis[e.key - 1].style.backgroundColor = "red";
				audio.src = "audio/" + e.key + ".mp3";
				break;
			default:
				console.log("按错了");
				break;
		}
	}
	// 添加onkeyup
	document.onkeyup = function(e) {
		// 查看时间对象中的哪个属性可以获取输入的字符
		// console.log(e.key)
		// 进行判定
		switch (e.key) {
			case "1":
			case "2":
			case "3":
			case "4":
			case "5":
			case "6":
			case "7":
				lis[e.key - 1].style.backgroundColor = "white";
				break;
			default:
				console.log("按错了");
				break;
		}
	}
	</script>
</body>
</html>
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值