再举几个可能发生的不同事件:
1.混用HTML 和JavaScript,这样文档很难解析,也不便後期维护。
2.即使在单一文件中,内置事件处理器也不是一个好主意。例如 : 一个按钮看起来还好,但是如果有一百个按钮呢?您得在文件中加上100个属性。这很快就会成为开发人员的噩梦。
行内事件处理器写法,例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="alert('Hello JS')">click me</button>
<button onclick="showAlert()">click me</button>
<script src="all.js"></script>
</body>
</html>
JS代码编写如下:
function showAlert(){
alert("hi JS function!");
}
点击按钮 → 触发事件 → 捕获事件 → 处理事件(处理click事件)
优点 : 程序更为精简,对於後期也较好维护。
缺点 : 一个元素只能有一个事件处理程序,若一个元素有两个以上事件处理程序,则会被後者覆盖。
HTML代码编写如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="clickMe">click me</button>
<script src="all.js"></script>
</body>
</html>
JS代码编写如下:
function clickAlert() {
alert('hello JS');
}
function secondClickAlert() {
alert('hello second JS');
}
let btn = document.getElementById('clickMe');
btn.onclick = clickAlert;
btn.onclick = secondClickAlert; //会把上面的clickAlert覆盖
透过addEventListener() 和removeEventListener()定义
里面放两个参数,第1个参数是告诉addEventListener要监听甚麽事件,第2个参数是执行处理事件的函式
里面放两个参数,第1个参数是告诉addEventListener要删除哪一事件,第2个参数则是哪一处理事件的函式要删除
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="clickMe">click me</button>
<script src="all.js"></script>
</body>
</html>
JS代码编写如下:
function clickAlert() {
alert('hello JS');
console.log(event);//可以显示click事件所有的属性,每个事件都有对应的event object方便程序利用这些属性作进一步处理
}
function secondClickAlert() {
alert('hello second JS');
}
let btn = document.getElementById('clickMe');
btn.addEventListener('click', clickAlert);
btn.addEventListener('click', secondClickAlert);
btn.removeEventListener('click',secondClickAlert); //因为此行代码导致secondClickAlert()被删除
>>: Day 23:「儿子,这是你的零用钱」- 元件间的资料传递
隐蔽频道 .隐蔽通道是“意外或未经授权的系统内通道,它使两个合作实体能够以违反系统安全策略但不超过实...
知识产权具有所有者,否则它将属於公共领域。“商业秘密是指可以出售或许可的机密信息的知识产权(IP)。...
本节是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c...
今天要来试着使用Firebase的机器学习套件,点击左边的Machine Learning 可以看到...
Step 1: 蒐集数据 要先将自己需要的数据下载好,并且确认资料格式而去做不同的处理 Step ...