从这一节开始,我们正式开始实操JavaScript中的各种事件。事件操作是JavaScript核心之一,也是本书的重中之重,因为JavaScript本身就是一门基于事件的编程语言。
在JavaScript中,常见的鼠标事件如下表所示。
事件 | 说明 |
---|---|
onclick | 鼠标单击事件 |
onmouseover | 鼠标移入事件 |
onmouseout | 鼠标移出事件 |
onmousedown | 鼠标按下事件 |
onmouseup | 鼠标松开事件 |
onmousemove | 鼠标移动事件 |
鼠标事件非常多,这里我们只列出最实用的,免得增加大家的记忆负担。从上表可以看出,事件名都是以“on”开头的。其实这些事件名,从英文角度来看就很好记忆的。
一、鼠标单击
单击事件onclick,我们在之前已经接触过非常多了,例如点击某个按钮弹出一个提示框。这里要特别注意一点,单击事件不只是按钮才有,任何元素我们都可以为它添加单击事件!
举例:为div元素添加单击事件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
#btn
{
display: inline-block;
width: 80px;
height: 24px;
line-height: 24px;
font-family:微软雅黑;
font-size:15px;
text-align: center;
border-radius: 3px;
background-color: deepskyblue;
color: White;
cursor: pointer;
}
#btn:hover {background-color: dodgerblue;}
</style>
<script>
window.onload = function ()
{
var oDiv = document.getElementById("btn");
oDiv.onclick = function ()
{
alert("玩我么?");
};
};
</script>
</head>
<body>
<div id="btn">调试代码</div>
</body>
</html>
浏览器预览效果如下图所示。
分析:
这里我们使用div元素模拟出一个按钮,并且为它添加了单击事件。当我们点击【调试代码】按钮之后,就会弹出提示框。之所以举这个例子,也是给小伙伴们说明一点:我们可以为任何元素添加鼠标单击事件!
在实际开发中,为了更好的用户体验,我们一般不会使用表单按钮,而更倾向于使用其他元素结合CSS模拟出来。因为表单按钮的外观实在是让人不敢恭维。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
window.onload = function ()
{
var oBtn = document.getElementById("btn");
oBtn.onclick = alertMes;
function alertMes() {
alert("欢迎来到绿叶学习网!");
};
}
</script>
</head>
<body>
<input id="btn" type="button" value="按钮"/>
</body>
</html>
浏览器预览效果如下图所示。
分析:
oBtn.onclick = alertMes;
function alertMes()
{
alert("欢迎来到绿叶学习网!");
};
上面这种代码其实可以等价于:
oBtn.onclick = function ()
{
alert("欢迎来到绿叶学习网!");
};
这两种写法都是等价的,小伙伴们要了解一下。
二、鼠标移入和鼠标移出
当用户将鼠标移入到某个元素上面时,就会触发onmouseover事件。如果将鼠标移出某个元素时,就会触发onmouseout事件。onmouseover和onmouseout这两个平常都是形影不离的。
onmouseover和onmouseout分别用于控制鼠标“移入”和“移出”这两种状态。例如在下拉菜单导航中,鼠标移入会显示二级导航,鼠标移出则会收起二级导航。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
window.onload = function ()
{
var oP = document.getElementById("content");
oP.onmouseover = function ()
{
this.style.color = "red";
};
oP.onmouseout = function ()
{
this.style.color = "black";
};
};
</script>
</head>
<body>
<p id="content">绿叶学习网</p>
</body>
</html>
浏览器预览效果如下图所示。
分析:
这里的this指向的是oP,也就是说
this.style.color = "red";
其实等价于:
oP.style.color = "red";
this的使用非常复杂,这里我们只是给初学者先简单介绍,下一章再详细讲解。
上面这个例子虽然简单,但是方法已经交给大家了。大家可以尝试使用onmouseover和onmouseout这两个事件来设计下拉菜单效果,考验能力的时候到了。
三、鼠标按下和鼠标松开
当用户按下鼠标时,会触发onmousedown事件。当用户松开鼠标时,则会触发onmouseup事件。
onmousedown表示鼠标按下的一瞬间所触发的事件,而onmouseup表示鼠标松开的一瞬间所触发的事件。当然我们都知道,只有“先按下”才能“再松开”。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
window.onload = function ()
{
var oTitle = document.getElementById("title");
var oBtn = document.getElementById("btn");
oBtn.onmousedown = function ()
{
oTitle.style.color = "red";
};
oBtn.onmouseup = function ()
{
oTitle.style.color = "black";
};
};
</script>
</head>
<body>
<h1 id="title">绿叶学习网</h1>
<hr />
<input id="btn" type="button" value="button" />
</body>
</html>
浏览器预览效果如下图所示。
分析:
在实际开发中,onmousedown、onmouseup和onmousemove经常配合实现拖拽、抛掷等效果,不过这些效果非常复杂,我们在JavaScript进阶中再详细介绍。