Lecture 05 - 使用 JavaScript 與 HTML 互動

回顧

我們在之前的課程中學到了什麼?

let a = 10;

if(a === 10){
  console.log("Hello mate")
}

function calculateAgeStatus(age){
    console.log(`You are in ${age} right?`)
}

calculateAgeStatus(16)
  • 執行 app.js

  • console.log 輸出變量

  • 資料型別 string, number, boolean

  • 算術運算符 ++, *, / 等等

  • 賦值運算符 =, +=, *=, /= 等等

  • 定義變量 let, const, var

  • 條件語句 if, else

  • 比較語句 ==, ===, <= 等等

  • 函數 function add(a,b){ return a + b }

如果 JavaScript 放在 HTML 中呢?

快速測試

我們有一個 HTML 文件作為快速小測驗,我們該如何知道使用者輸入了正確的答案?

使用 HTML ?

糟糕了,HTML 只用於定義元素。

使用 CSS ?

不行。CSS 只用於樣式。

使用 Javascript ?

對,但為什麼?


我們需要在 HTML 中使用 JavaScript

JavaScript 是 HTML 中的大腦,它幫助執行所有計算/邏輯渲染工作。

例如:是否有東西被點擊?計算使用者輸入的總和。


在 HTML 中加入 script

在 HTML 中,我們可以添加 <script> 標籤來使用 JavaScript。

在網頁中按下右鍵或按下 F12 開啟 DevTools ,然後在右上方尋找 Console

使用 document.querySelector() 控制網頁元素


Web JS 的基本網頁元素控制

讓我們假設有以下的 HTML:

index.html


取得 DOM 元素

一般來說,我們有以下兩個方法可以取得相對應的元素,兩個方法都是網頁內建的。

這些方法可以幫助我們取得相關的元素。


將互動加入到框框裡

一般來說,我們可以在 DOM 元素中加入事件:


index.html with const


index.html with document


DOM值控制

您也可以通過 innerHTML 控制元素的消息。


index.html with const


index.html with document


更多 innerHTML 參考資料

counter.html

控制輸入

在 HTML 中,我們有一個標籤 <input>,允許用戶輸入內容。

HTML 的 <input> 元素用於創建交互式控件,以便接受用戶從網頁表單中輸入的數據。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input


<input> 控制

<input> 標籤用於獲取用戶輸入的數據,並將其發送回服務器/本地進行檢查。

例如,我們可以像這樣使用 <input> 標籤:


<input type="???"> 控制

支持以下類型:

  • text, number, date

  • password, email

  • checkbox, radio

  • color, url

  • week, month, time, datetime-local, date

  • tel, range

  • submit, reset

以及更多...


取得 <input>

在 JavaScript 中要取得 <input> 的值,必須先給予它一個 id 或 class。

index.html

接著,在 JavaScript 中,我們可以使用 .value 屬性來取得它的值。

index.js


當使用者輸入時取得 <input>

為了偵測使用者的輸入事件,我們可以使用 addEventListenerinput 事件來聆聽輸入事件。

index.html

index.js


當使用者輸入時取得多個 <input>

如果要取得多個不同的 <input>,必須為每個 <input> 元素分別指定不同的 id。

index.js


Lab 1: 數學測驗

撰寫一個數學測驗的網站,每次會產生不同的數學題目及答案,並依據使用者輸入來檢查答案是否正確。

範例:

  • 這一次的題目是 10 + 23 = ?

  • 其他時間的題目是 10 + 36 = ?

  • 另一次的題目是 10 + 2 = ?

您可以參考 quiz.html 檔案進行實作。

提示 1: 使用 Math.floor(Math.random() * 30) 產生一個隨機整數。


Lab 1: 數學測驗提示

tips1.js

tips2.html


Lab 1.1: 加強版數學測驗

如果您已經完成了練習 1,請嘗試調整題目為:

  • 問題: 10 + x = 45,找出 x 的值

  • 問題: 14 + x = 32,找出 x 的值

製作一個網站,要求使用者輸入 x,並檢查 x 是否符合方程式。答案也應該是隨機產生的。

Last updated