事件处理就是当使用者对画面做了一个动作,我们的程序必须侦测这个动作,并且做出反应。
如果事件没有被触发,也就是使用者没有动作,程序就不会有任何反应。
例如,加入购物车按纽,在我按下按钮後就会反应并将商品加入购物车。
另外,如果我没有按下按钮的话,就不会有任何商品被加入购物车。
click
事件就是用滑鼠点击会有反应的事件
范例,HTML 程序码
<html>
<head>
<script>
</script>
</head>
<body>
<button onclick="alert('click');">Click</button>
</body>
</html>
这样就是一个基本的事件处理,我按下 Click 的话就会跳出警告视窗,显示 click。
alert('click')
这里面用单引号,因为 onclick=""
已经使用了双引号,为了让程序可以顺利的阅读,所以 alert 使用单引号将字串包括住。
上面尝试了 click
事件
现在来写写 mouseover
与 mouseout
事件
mouseover
在滑鼠移动进目标元素会触发
mouseout
在滑鼠移动出目标元素会触发
<html>
<head>
<script>
</script>
</head>
<body>
<button onclick="alert('click');">Click</button>
<span onmouseover="this.style.color='red';"
onmouseout="this.style.color='black';">test</span>
</body>
</html>
mouseover
触发就执行 this.style.color='red';
这段程序,将文字改成红色
mouseout
触发就执行 this.style.color='black';
这段程序,将文字改成黑色
style.color 是 DOM 提供的属性,可以控制元素的文字颜色。
事件处理,并不会一载入 Javascript 程序码就马上执行,而是会等使用者触发事件後,才会运作里面的程序。
所以我们会注册事件监听器,等使用者触发事件就执行。
也就是,我们一样要预先设定一段程序码,这些程序码会一直等待,只要使用者触发事件就会马上执行。
例如,我希望按下按钮就会跳出讯息,我会注册 click
事件
<button onclick="alert('click');">Click</button>
接着 onclick
属性的程序码就会一直等待,只要使用者点了 就马上执行 alert('click')
那麽注册事件的方法有三种
写在 HTML 上面,透过 on+事件名
的属性来注册
范例:
<button onclick="alert('click');">Click</button>
使用 onclick
属性,在 标签注册 click
事件
写在 Javascript 里,使用 HTML DOM
提供的方法注册
要操作的目标.on+事件名
=要执行的函式
范例:
<script>
window.onclick=function(){
alert('click');
}
</script>
我在 标签注册了 click
事件,只要点击到浏览器的外框就会启动
如果我注册在 标签的话,因为画面中可以有很多个 标签,要先让浏览器知道我注册在哪个标签
所以要使用 DOM
里的 getElementById()
,得到我想操作的标签
on+事件名
注册事件,并将要执行的函式放进去<body>
<button id="btn">Click</button>
<script>
var btn=document.getElementById("btn"); // 得到 button 标签放进变数 btn 里
btn.onclick=function(){ // 注册事件,并将要执行的函式放进去
alert('click');
}
</script>
</body>
使用事件监听器注册
写在 Javascript 里,使用 addEventistener(),语法如下
要操作的目标.addEventListener(事件名称,事件的处理器,是否为捕获模式)
范例:
<body>
<button id="btn">Click</button>
<script>
var btn=document.getElementById("btn");
btn.addEventListener('click',function(){ alert('click') },false)
</script>
</body>
这样 button 按下去之後一样可以跳出警告视窗
为什麽注册事件要有三种不同的写法呢? HTML 属性、DOM 属性、addEventLitener()
这三种有什麽差异?
写的顺序还需要注意什麽?
就请参考下一篇吧^^
<<: Day12:内建的 suspend 函式,好函式不用吗?(1)
>>: 网页三巨头:HTML、CSS、JavaScript的关联性
Method程序设计中,可以说是将程序模组化,这样有助於加速程序的开发、便於分析与维护等,如果要重复...
本文同步更新於blog 前情提要:铁路运输系统,参考范例:运输系统(工厂方法模式) <?p...
上一回提到广度优先搜寻的步骤是检查图中节点,并将与其相连的节点放入伫列中,再一一检查。 光是这样的文...
我们已将资料集上传到 nilvana 的 Vision Studio 中, 也知道标注格式的种类与基...
如标题所述,这里分享的 java tomcat server 专案具有以下特点: JDK 8 的开发...