250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- keyframes
- HTML
- php
- front-end
- effect
- hover
- Animation
- iOS 개발자
- javascript
- react
- 프론트엔드
- 애니메이션
- MAC
- ipad
- xcode
- jQuery
- css3
- CSS
- 풀스택
- IOS
- 백엔드
- image
- button
- 자바스크립트
- html5
- iPhone
- 비전공자
- SWIFT
- 개발자
- 비전공 개발자
Archives
- Today
- Total
비전공자 개발일기
Javascript Convert Rank + Calculate score 본문
728x90
SMALL
<article>
<h2>점 수 계 산 기</h2>
<ul>
<form class="menu_btn">
<li> <input type="button" value="총점" onclick="totalRank()"></li>
<li> <input type="button" value="평균" onclick="avgRank()"></li>
<li> <input type="button" value="최소" onclick="minRank()"></li>
<li> <input type="button" value="최대" onclick="maxRank()"></li>
<li><input type="button" value="낙제" onclick="failRank()"></li>
<li><input type="button" value="만점" onclick="perfectRank()"></li>
<li><button type="button" name="button" onclick="convertRank()">변환</button></li>
</form>
</ul>
<form name="someTestForm" action="index.html" method="POST">
<p><label>수학 점수 : <input type="number" class= "score" name="m" value="70"></label></p>
<p><label>영어 점수 : <input type="number" class= "score" name="e" value="90"></label></p>
<p><label>화학 점수 : <input type="number" class= "score" name="c" value="100"></label></p>
<p><label>국사 점수 : <input type="number" class= "score" name="h" value="30"></label></p>
<p><label>국어 점수 : <input type="number" class= "score" name="k" value="70"></label></p>
<p><label>총 점수 : <input type="number" name="total" value="0"></label></p>
<p><label>평균 점수 : <input type="number" name="avg" value="0"></label></p>
<p><label>최소 점수 : <input type="number" name="min" value="0"></label></p>
<p><label>최대 점수 : <input type="number" name="max" value="0"></label></p>
<p><label>낙제 유무 : <input type="number" name="is_f" value="0"></label><br><sub>(낙제 : 50점 미만 과목)</sub></p>
<p><label>만점 유무 : <input type="number" name="is_ten" value="0"></label></p>
<p><input type="reset"></p>
</form>
<script>
const form = document.forms["someTestForm"];
// console.log(form[0]) <input type="number" name="m" value="70">
// console.log(form[0].value)
const rank = document.querySelectorAll('[type="number"].score');
const rankList = Array.from(rank);
// console.log(rankList);
// domList를 새로운 배열로 바꾸는 방법
// Array.from()
const total = document.querySelector("[name='total']");
const avg = document.querySelector("[name='avg']");
const min = document.querySelector("[name='min']");
const max = document.querySelector("[name='max']");
const is_f = document.querySelector("[name='is_f']");
const is_ten = document.querySelector("[name='is_ten']");
// console.log(rank[0]); <input type="number" name="m" value="70">
function totalRank() {
let sum = 0;
rank.forEach((val) => {
sum += Number(val.value);
})
total.value = sum;
}
function avgRank() {
let sum = 0;
let avgScore = 0;
rank.forEach((val) => {
sum += Number(val.value);
})
avgScore = sum / rank.length;
avg.value = avgScore;
}
function minRank() {
let tempMin = Infinity;
rank.forEach((val) => {
// console.log(Number(val.value))
if(tempMin > Number(val.value)) {
tempMin = Number(val.value)
}
})
min.value = tempMin;
}
function maxRank() {
let tempMax = -Infinity;
rank.forEach((val) => {
// console.log(Number(val.value))
if(tempMax < Number(val.value)) {
tempMax = Number(val.value)
}
})
max.value = tempMax;
}
function failRank() {
// 낙제 과목 개수 표시 코드
// let count = 0
// rank.forEach((val) => {
// if(Number(val.value) < 50) {
// count +=1;
// }
// })
// is_f.value = count;
let failResult = true;
rankList.every((val) => {
if(Number(val.value) < 50) {
failResult = false;
}
})
is_f.value = Number(failResult);
}
function perfectRank() {
// 만점 과목 개수 표시 코드
// let count = 0
// rank.forEach((val) => {
// if(Number(val.value) === 100) {
// count +=1;
// }
// })
// is_ten.value = count;
let perfectRank = false;
rankList.some((val) => {
if(Number(val.value) === 100) {
perfectRank = true;
}
is_ten.value = Number(perfectRank);
})
}
function convertRank() {
let convertScore = [];
rank.forEach((val, i) => {
convertScore[i] = (Number(val.value) * 0.045).toFixed(2)
// Number.toFixed(x) : 숫자를 고정 소수점 표기법으로 표기해서 반환
})
convertScore.forEach((val, i ) => {
form[i].value = convertScore[i] ;
})
}
</script>
</article>
728x90
LIST
'Javascript' 카테고리의 다른 글
Javascript Calendar (0) | 2021.09.09 |
---|---|
Javascript Drum (0) | 2021.09.08 |
Javascript bubble & selection & insertion sort (0) | 2021.09.05 |
Javascript For loop - tree (0) | 2021.09.04 |
Javascript NaN (0) | 2021.09.01 |