iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
Modern Web

33歲轉職者的前端筆記系列 第 22

33歲轉職者的前端筆記-DAY 22 成績計算機練習筆記

  • 分享至 

  • xImage
  •  

流程

1.先觀察畫面,哪些值需要抓
2.抓HTML的值:
a.先宣告變數,變數就是抓HTML的值,也可以說變數取代HTML的值之後用變數做程式的處理。
例:const 變數名稱 = document.getElementById(html id的值);

範例code如下:

// 成績計算表單
const scoreForm = document.getElementById('scoreForm');
// 各科目分數輸入框
const zhInput = document.getElementById('chineseScoreInput');
const enInput = document.getElementById('englishScoreInput');
const mathInput = document.getElementById('mathScoreInput');
// 報告顯示區塊
const reportDiv = document.getElementById('result');

3.抓form的值或按鈕的值,去做監聽,在想流程怎麼做
4.按照流程做:
a.取得各科目成績:宣告變數去存入成績,成績數值要轉換成數字才能做運算
b.計算總分:宣告加總變數等於三個成績加起來
c.計算平均分數:宣告加總的成績除以3
d.計算等級

scoreForm.addEventListener('submit', function (e) {
   // 防止表單重整畫面
   e.preventDefault();
   console.log("表單被送出了");
   // 取得各科目成績
   const zh = parseInt(zhInput.value),
         en = parseInt(enInput.value),
         math = parseInt(mathInput.value);

   // 計算總分
   const sum = zh +en + math;
   console.log("總分", sum);

   // TODO: 計算平均分數
   const avg = Math.round(sum / 3 * 100) / 100;
   console.log("avg",avg);
   
   // TODO: 計算等級
   // 平均分數 >= 90 為A+
   // 平均分數 >= 80 為A
   // 平均分數 >= 70 為B
   // 平均分數 >= 60 為C
   // 平均分數 < 60 為F。
   let gpa;
   let color = "secondary";
   if (avg >= 90) {
       gpa = "A+";
       color = "success";
   } else if (avg >= 80) {
       gpa = "A";
   } else if (avg >= 70) {
       gpa = "B";
   } else if (avg >= 60) {
       gpa = "C";
   } else {
       gpa = "F";
       color = "danger";
   }

   // TODO: 顯示報告
   const report = `<div class="alert alert-${color}">
       國文: ${zh} <br>
       英文: ${en} <br>
       數學: ${math} <br>
       總分: ${sum} <br>
       平均分數: ${avg}
       總評: ${gpa}
   </div>`;
   reportDiv.innerHTML = report;

});

重點語法小筆記

e.preventDefault(); 防止表單重整畫面
const avg = math.round(sum / 3 * 100) / 100; 四捨五入到小數點第二位


上一篇
33歲轉職者的前端筆記-DAY 21 英吋轉公分單位轉換器練習筆記
下一篇
33歲轉職者的前端筆記-DAY 23 JavaScript 變數與型別
系列文
33歲轉職者的前端筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言