<button onclick = "show()"></button>
javascript
頁面所有加載完以後再去解析加載裏面的內容。而button的點擊事件在解析button的時候沒有被定義。html
<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>
<script>
window.onload =function(){
console.log('onload執行...');
var oBtn = document.getElementById('btn1');
oBtn.addEventListener('click',function(){
console.log('btn1的點擊監聽事件被觸發');
})
}
</script>
添加事件監聽的第三個參數,flase:冒泡 ,true:捕獲;二者區別在於,冒泡觸發是從內向外的,捕獲事件是從外向內的,點擊事件的順序是從外到內,在從內到外,給事件設置不一樣的事件監聽方式使他在不一樣的階段執行java
<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>
document.getElementById('btn1').addEventListener('click',function(e){
e.stopPropagation();
console.log('btn1的點擊監聽事件被觸發');
},false);