1 直接在html標簽中綁定
<button onclick = "show()"></button>
注意當你引用的js代碼是包裹在window.onload中的形式的時候,show()是會報沒有定義的錯誤,原因在於window.onload是在
頁面全部加載完之后再去解析加載里面的內容。而button的點擊事件在解析button的時候沒有被定義。
2 用js的對象進行綁定事件
<body><buttonid="btn1">點擊1</button></body><script>window.onload =function(){console.log("onload事件執行...");var oBtn = document.getElementById('btn1');oBtn.onclick =function(){console.log('btn1的點擊事件被觸發...');}}</script>
3 用事件監聽的方式
<script>window.onload =function(){console.log('onload執行...');var oBtn = document.getElementById('btn1');oBtn.addEventListener('click',function(){console.log('btn1的點擊監聽事件被觸發');})}</script>
4 事件監聽的捕獲和冒泡方式
addEventListener(‘觸發事件’,’執行函數’,boolean),boolean默認為false
添加事件監聽的第三個參數,flase:冒泡 ,true:捕獲;兩者區別在於,冒泡觸發是從內向外的,捕獲事件是從外向內的,點擊事件的順序是從外到內,在從內到外,給事件設置不同的事件監聽方式使他在不同的階段執行
<div id ='div1'><div id="div2"><button id ='btn1'>點擊1</button><button id ='btn2'>點擊2</button></div></div><script>window.onload =function(){console.log('onload執行...');document.getElementById('btn1').addEventListener('click',function(){console.log('btn1的點擊監聽事件被觸發');},false);document.getElementById('btn2').addEventListener('click',function(){console.log('btn2的點擊監聽事件被觸發');},true);document.getElementById('div1').addEventListener('click',function(){console.log('div1的點擊監聽事件被觸發');},false);document.getElementById('div2').addEventListener('click',function(){console.log('div2的點擊監聽事件被觸發');},true);}</script>
5 阻止事件冒泡
通過e.stopPropagation();阻止冒泡
document.getElementById('btn1').addEventListener('click',function(e){e.stopPropagation();console.log('btn1的點擊監聽事件被觸發');},false);
