文章目录
- JavaScript 事件案例
- 统计输入字符数量
- 验证输入内容
- 搜索框
- 复选框的全选和反选
- 下拉列表
- 自定义鼠标右键菜单
- ctrl+enter发送消息
- 规定范围内拖拽元素
- 两元素碰撞切换图片
- 内容滚动条
- 鼠标滚动缩放图片
 
 
JavaScript 事件案例
统计输入字符数量
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload = function() {
				var oTxt = document.getElementById("txt");
				var oNum = document.getElementById("num");
				oTxt.onkeyup = function() {
					var str = oTxt.value;
					oNum.innerHTML = str.length;
				}
			}
		</script>
	</head>
	<body>
		<input id="txt" type="text">
		<div>字符串长度为:<span id="num" style="color:red;">0</span></div>
	</body>
</html>

验证输入内容
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload = function() {
				var oTxt = document.getElementById("txt");
				var oNum = document.getElementById("num");
				var reg = /^[0-9]*$/;
				oTxt.onkeyup = function() {
					var str = oTxt.value;
					if (reg.test(str)) {
						oNum.innerText = "输入正确";
					} else {
						oNum.innerText = "请输入数字";
					}
				}
			}
		</script>
	</head>
	<body>
		<input id="txt" type="text">
		<div>字符串长度为:<span id="num" style="color:red;">0</span></div>
	</body>
</html>


搜索框
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload = function() {
				var txt = document.getElementById("txt");
				var btn = document.getElementById("btn");
				txt.onfocus = function() {
					if (this.value == "搜索一下") {
						this.value = "";
					}
				}
				txt.onblur = function() {
					if (this.value == "") {
						this.value = "搜索一下";
					}
				}
				btn.onclick = function() {
                    //获取焦点
					txt.focus();
				}
			}
		</script>
	</head>
	<body>
		<input id="txt" type="text" value="搜索一下" />
		<input type="button" id="btn" value="搜索" />
	</body>
</html>


复选框的全选和反选
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload = function() {
				var oFruits = document.getElementsByName("fruit");
				var checkAll = document.getElementById("checkAll");
				var checkBack = document.getElementById("checkBack");
				checkAll.onclick = function() {
					for (var i = 0; i < oFruits.length; i++) {
						oFruits[i].checked = true;
					}
				}
				checkBack.onclick = function() {
					for (var i = 0; i < oFruits.length; i++) {
						oFruits[i].checked = !oFruits[i].checked;
					}
				}
			}
		</script>
	</head>
	<body>
		<div>
			<p>你喜欢的水果:</p>
			<label><input type="checkbox" name="fruit">苹果</label>
			<label><input type="checkbox" name="fruit">橘子</label>
			<label><input type="checkbox" name="fruit">香蕉</label>
		</div>
		<br>
		<div>
			<label><input id="checkAll" type="radio" name="select">全选</label>
			<label><input id="checkBack" type="radio" name="select">反选</label>
		</div>
	</body>
</html>

下拉列表
当我们选择下拉列表的某一项时,就会触发onchange事件,然后就会在新的窗口打开对应的页面。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script>
			window.onload = function() {
				var list = document.getElementById("list");
				list.onchange = function() {
					var link = this.options[this.selectedIndex].value;
					window.open(link);
				}
			}
		</script>
	</head>
	<body>
		<select id="list">
			<option value="https://www.baidu.com">百度</option>
			<option value="https://www.tencent.com/zh-cn/">腾讯</option>
			<option value="https://www.aliyun.com/">阿里</option>
		</select>
	</body>
</html>
自定义鼠标右键菜单
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>使用oncontextmenu事件自定义右键菜单</title>
		<style>
			#div1 {
				width: 120px;
				height: 200px;
				border: 1px solid #CCC;
				position: absolute;
				display: none;
				text-align: center;
			}
			ul {
				padding: 5px 0;
			}
			li {
				list-style: none;
				margin: 20px;
			}
			a {
				text-decoration: none;
				color: #000;
			}
		</style>
		<script>
			window.onload = function() {
				var oDiv = document.getElementById('div1');
				//单击右键阻止默认的上下文菜单弹出,而弹出自定义的上下文菜单
				document.oncontextmenu = function(ev) {
					var ev = ev || event;
					oDiv.style.display = 'block'; //显示div
					//设置弹出的div的left和top为单击鼠标光标处的位置
					oDiv.style.left = ev.clientX + 'px';
					oDiv.style.top = ev.clientY + 'px';
					return false; //阻止浏览器的默认行为
				};
				//点击空白处隐藏菜单
				document.onclick = function() {
					oDiv.style.display = 'none';
				};
			};
		</script>
	</head>
	<body>
		<div id="div1">
			<ul>
				<li><a href="#">刷 新</a></li>
				<li><a href="#">资源下载</a></li>
				<li><a href="#">联系我们</a></li>
			</ul>
		</div>
	</body>
</html>

ctrl+enter发送消息
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>按Enter键发送信息</title>
		<style>
			ul {
				width: 300px;
				border: 1px solid silver;
			}
		</style>
		<script>
			window.onload = function() {
				var oText = document.getElementById('text1');
				var oUl = document.getElementById('ul1');
				oText.onkeyup = function(e) {
					var e = e || event;
					if (this.value != "") {
						if (e.keyCode == 13 && e.ctrlKey) {
							var oLi = document.createElement('li');
							oLi.innerText = oText.value;
							if (oUl.children[0]) {
								oUl.insertBefore(oLi, oUl.children[0]);
							} else {
								oUl.appendChild(oLi);
							}
							oText.value = "";
						}
					}
				};
			};
		</script>
	</head>
	<body>
		<ul id="ul1"></ul>
		<input type="text" id="text1" />
	</body>
</html>

规定范围内拖拽元素
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>规定范围内拖拽元素</title>
		<style>
			#div1 {
				width: 100px;
				height: 100px;
				background: red;
				border: 5px solid green;
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
		<script>
			window.onload = function() {
				var oDiv = document.getElementById("div1");
				oDiv.onmousedown = function(e) {
					var e = e || event;
					//目标元素上鼠标距离左上顶点的偏移值
					var dx = e.clientX - this.offsetLeft;
					var dy = e.clientY - this.offsetTop;
					document.onmousemove = function(e) {
						var e = e || event;
						//确定目标元素的左上顶点
						var left = e.clientX - dx;
						var top = e.clientY - dy;
						//限制范围
						if (left < 0) {
							left = 0;
						} else if (left > document.documentElement.clientWidth - oDiv.offsetWidth) {
							left = document.documentElement.clientWidth - oDiv.offsetWidth;
						}
						if (top < 0) {
							top = 0;
						} else if (top > document.documentElement.clientHeight - oDiv.offsetHeight) {
							top = document.documentElement.clientHeight - oDiv.offsetHeight;
						}
						oDiv.style.left = left + "px";
						oDiv.style.top = top + "px";
					}
					document.onmouseup = function() {
						document.onmousemove = null;
					}
					return false; //阻止默认行为
				};
			};
		</script>
	<body>
		<div id="div1"></div>
	</body>
</html>

两元素碰撞切换图片
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>规定范围内拖拽元素</title>
		<style>
			#div1 {
				width: 100px;
				height: 100px;
				background: red;
				border: 5px solid green;
				position: absolute;
				left: 0;
				top: 0;
			}
			#img1 {
				position: absolute;
				left: 200px;
				top: 120px;
				border: 1px dashed silver;
			}
		</style>
		<script>
			window.onload = function() {
				var oDiv = document.getElementById("div1");
				var oImg = document.getElementById("img1");
				var imgLeft = oImg.offsetLeft;
				var imgRight = imgLeft + oImg.offsetWidth;
				var imgTop = oImg.offsetTop;
				var imgBottom = imgTop + oImg.offsetHeight;
				oDiv.onmousedown = function(e) {
					var e = e || event;
					//目标元素上鼠标距离左上顶点的偏移值
					var dx = e.clientX - this.offsetLeft;
					var dy = e.clientY - this.offsetTop;
					console.log(dx + "-" + dy);
					document.onmousemove = function(e) {
						var e = e || event;
						//获取目标元素的左上右下顶点
						var left = e.clientX - dx;
						var right = left + oDiv.offsetWidth;
						var top = e.clientY - dy;
						var bottom = top + oDiv.offsetHeight;
						//判断是否碰撞
						if (right < imgLeft || left > imgRight || bottom < imgTop || top > imgBottom) {
							//不碰撞
							oImg.src = "img/apple_pic.png";
						} else {
							//碰撞
							oImg.src = "img/banana_pic.png";
						}
						oDiv.style.left = left + "px";
						oDiv.style.top = top + "px";
					}
					document.onmouseup = function() {
						document.onmousemove = null;
					}
					return false; //阻止默认行为
				};
			};
		</script>
	<body>
		<div id="div1"></div>
		<img id="img1" src="img/apple_pic.png" />
	</body>
</html>

内容滚动条
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#box {
				border: 1px solid silver;
				width: 218px;
				height: 198px;
				position: absolute;
			}
			#sliderBox {
				width: 30px;
				height: 198px;
				background: grey;
				position: absolute;
				right: 0;
				top: 0;
			}
			#slider {
				width: 30px;
				height: 30px;
				background: black;
				position: absolute;
				left: 0;
				top: 0;
			}
			#contentBox {
				width: 168px;
				height: 198px;
				position: absolute;
				left: 10px;
				top: 0;
				overflow: hidden;
			}
			#content {
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
		<script>
			window.onload = function() {
				var sliderBox = document.getElementById("sliderBox");
				var slider = document.getElementById("slider");
				var contentBox = document.getElementById("contentBox");
				var content = document.getElementById("content");
				var maxTop = sliderBox.offsetHeight - slider.offsetHeight; //滑块最大滚动范围
				slider.onmousedown = function(ev) {
					var ev = ev || event;
					//鼠标在滑块上的偏移值
					var dy = ev.clientY - this.offsetTop;
					document.onmousemove = function(ev) {
						var ev = ev || event;
						var top = ev.clientY - dy; //滑块距离顶部距离
						if (top < 0) {
							top = 0;
						} else if (top > maxTop) {
							top = maxTop;
						}
						slider.style.top = top + "px";
						var scale = top / maxTop; //求滚动条每次滚动后的top值与最大top值的比率
						//滚动条滚动时,包含内容的div的top值
						content.style.top = (contentBox.offsetHeight - content.offsetHeight) * scale + "px";
					};
					document.onmouseup = function() {
						document.onmousemove = null;
					};
					return false;
				};
			};
		</script>
	</head>
	<body>
		<div id="box">
			<div id="sliderBox">
				<div id="slider"></div>
			</div>
			<div id="contentBox">
				<div id="content">
					这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。
					这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。
					这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。 这是一些内容。
				</div>
			</div>
		</div>
	</body>
</html>

鼠标滚动缩放图片
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>使用鼠标滚轮事件实现对指定图片的缩放</title>
		<style type="text/css">
			img {
				position: fixed;
				border: 1px solid silver;
			}
		</style>
		<script>
			window.onload = function() {
				var oImg = document.getElementById('img1');
				oImg.onmousewheel = fn; //对IE及chrome有效
				if (oImg.addEventListener) { //对FF有效
					oImg.addEventListener('DOMMouseScroll', fn, false);
				}
				function fn(ev) {
					var ev = ev || event;
					var b = true; //将滚轮向上和向下滚动得到的正负值转换为boolean值
					console.log(ev.wheelDelta);
					if (ev.wheelDelta) {
						b = ev.wheelDelta > 0 ? true : false;
					} else {
						b = ev.detail < 0 ? true : false;
					}
					if (b) {
						//b为true表示上滑,缩小
						this.style.width = this.offsetWidth - 10 + 'px';
					} else {
						//b为false表示下滑,放大
						this.style.width = this.offsetWidth + 10 + 'px';
					}
					//取消由addEventListener()绑定的鼠标滚动时滚动条默认会滚动的事件
					if (ev.preventDefault) {
						ev.preventDefault();
					}
					//取消由obj.onmousewheel = fn形式绑定的鼠标滚动时滚动条默认会滚动的事件
					return false;
				}
			};
		</script>
	</head>
	<body style="height:2000px">
		<img src="img/apple_pic.png" id="img1" />
	</body>
</html>




















