# 一顆按鈕的故事 - 01
:::success
:beginner: **有一顆按鈕,你按按他,他會跟你說你好。**
:::
💬 首先我們先長出一顆按鈕
```javascript=1
//這段是HTML,不是javascript,不用學。
<div id="qqid" class="qqclass">
我是一顆小按鈕
</div>
```
---
💬 開始寫javascript吧
```javascript=1
//我想要點了按鈕之後跳出一個你好的訊息。
//最直接的寫法
document.querySelector('.qqclass').addEventListener('click', function() {
alert('你好');
},false);
```
💬 看不懂欸…拆解一下這段程式…
```javascript=1
document
querySelector('.qqclass')
addEventListener('click', function(){},false)
alert('你好')
```
`doucment`
>HTML的最外層
`querySelector()`
>用來選擇HTML裡面的元素
>('.qqclass')或是('#qqid')或是('div')都能選到我們那顆小按鈕。
>特別注意,如果你有兩個一模一樣的按鈕,那麼querySelector()只能選到第一個喔。
`addEventListener()`
>用來判斷我們對網頁做了甚麼事情,觸發後再執行我們想要增加的東西。
>addEventListener('click',function(){
>
>},false);
>
>click = 點擊滑鼠左鍵
>function(){} = 點了滑鼠後想要增加甚麼東西就寫在這裡面
>false = 事件冒泡的時候執行這整段程式
>true = 事件捕獲的時候執行這段程式
`alert('你好')`
>跳出一個你好的訊息。
>把這句放在上面的addEventListener(‘click’,function(){ `這裡` },false);
💬 把它們組裝回去
```javascript=1
document
querySelector('.qqclass')
addEventListener('click', function(){},false)
alert('你好')
//先透過"."來把每一個需求連在一起。
//所以我們把第一行用.來跟第二行連在一起,接著一樣用.把第三行連在一起。
document.querySelector('.qqclass').addEventListener('click', function(){},false)
//最後把第四行放進第三行的{}裡面。
document.querySelector('.qqclass').addEventListener('click', function(){alert('你好')},false)
//幫他斷行一下
document.querySelector('.qqclass').addEventListener('click', function() {
alert('你好')
},false)
//這整段程式做了兩件事情
//1. 按了一下按鈕
//2. 跳出你好的訊息
//每件事情結尾記得都要用";"來做結束。
document.querySelector('.qqclass').addEventListener('click', function() {
alert('你好');
},false);
```
---
💬 接著我們要把這段javascript改成大家比較喜歡的寫法
```javascript=1
function qq(){
alert('你好');
}
document.querySelector('.qqclass').addEventListener('click', qq, false);
//仔細看第一行跟第四行都有一段qq。
//試著把前三行剪下,放到第四行的qq後面,然後把qq都刪掉!
//你會發現跟我們一開始寫的長得一樣囉~
//這種寫法就是先把alert('你好')寫好,然後把他丟到滑鼠點一下的事件裡面觸發效果。
//qq則是我們自己隨便取的名字,用來把這兩件事情綁在一起。
```
💬 或是你也可以改成這樣
```javascript=1
const qq = function(){
alert('你好');
}
document.querySelector('.qqclass').addEventListener('click', qq, false);
```
💬 或是更懶一點…
```javascript=1
const qq = () => {
alert('你好');
}
document.querySelector('.qqclass').addEventListener('click', qq, false);
```
💬 懶還要更懶…
```javascript=1
const qq = () => alert('你好');
document.querySelector('.qqclass').addEventListener('click', qq, false);
```
:::info
以上這五種寫法都可以,初學者可以先從第一種直線思考邏輯來編寫,寫完之後再把他改造成第二種或第四種,至於到底要用哪種可以依照你們團隊的習慣做調整。
:::
:::warning
:information_source: 上面有一些奇怪的名詞,甚麼事件冒泡、事件捕獲、const是殺小…?下次再告訴你!
:::