【從零開始學JavaScript】實作練習 - Lorem假文產生器
Lorem-Ipsum
前言
- Lorem Ipsum假文介紹 : https://ithelp.ithome.com.tw/articles/10130206
功能說明

- 標題
- 輸入區域 : 可以輸入0~9之間的數字x
- 顯示結果 : 產生出x段的假文
HTML重點
標題
1
<h3>tired of boring lorem ipsum?</h3>
輸入區域
1
2
3
4
5
6
7
8
9
10
11<!-- form -->
<form class="lorem-form">
<!-- label -->
<label for="amount">paragraphs:</label>
<!-- 輸入方格 -->
<input type="number" name="amount" id="amount" placeholder="5"/>
<!-- Submit按鈕 -->
<button type="submit" class="btn">generate</button>
</form>- 將整個form的Class設為
lorem-form - 將輸入方格的id設為
amount,並讓其預設顯示5
- 將整個form的Class設為
顯示結果 :
1
<article class="lorem-text"></article>
- 將整個顯示結果的Class設為
lorem-text
- 將整個顯示結果的Class設為
JavaScript重點
將所有假文存入
text陣列中1
const text = [`Jelly sweet roll jell...`,...]
利用
class="lorem-form"去抓取整個form1
const form = document.querySelector(".lorem-form");
利用
id="amount"去抓取輸入方格1
const amount = document.getElementById("amount");
利用
class="lorem-text"去抓取顯示結果1
const result = document.querySelector(".lorem-text");
預設輸入方格的值為5
1
amount.value = "5";
為form新增提交事件
1
2
3form.addEventListener("submit", function (e) {
//Details...
}
下列程式碼皆在
form.addEventListener()之內
按了按鈕之後,停止提交表單
1
e.preventDefault();
- 因為Submit事件是一瞬間的事,若沒有使用
preventDefault(),顯示結果將會顯示一下便消失 - 詳請請閱讀下方參考資料
- 因為Submit事件是一瞬間的事,若沒有使用
將輸入方格的值轉為數字
1
const value = parseInt(amount.value);
在索引值0~9之間隨機取一數
1
const random = Math.floor(Math.random() * text.length);
- 詳情於【04】網頁練習 - 更改背景顏色中有提到
在索引值0~9之間隨機取一數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19if (isNaN(value) || value < 0 || value > 9) {
// 若Value大於9、小於0或是NaN
result.innerHTML = `<p class="result">${text[random]}</p>`;
//隨機顯示一段假文
} else {
let tempText = text.slice(0, value);
//回傳索引值為0~value的陣列
tempText = tempText.map(function (item) {
return `<p class="result">${item}</p>`;
}).join("");
//將陣列塞入HTML碼中,並轉為純字串
result.innerHTML = tempText;
//將該字串設為顯示結果article的內容碼
}innerHTML、Array.map()與Array.join()於【11】網頁練習 - 分類型Menu(上)中有提到Array.slice(begin, end): 回傳一個新陣列,為原陣列選擇之begin至end(不含 end)的部分(原本的陣列將不會被修改)。
參考與引用來源
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


