---
# System prepended metadata

title: Javascript 1-1

---

# 一顆按鈕的故事 - 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是殺小…？下次再告訴你！
:::