그동안 공부한걸 좀 활용해보자.
이번에 만들어볼건 조금 복잡하다.
먼저 input 박스에 숫자를 입력하고 버튼을 누르면 이름, html, css, js 과목 input 박스들이 입력된 숫자만큼 나타나고,
각 박스에 데이터를 넣고 버튼을 누르면 이름별 각 과목의 점수, 총점, 평균을 테이블로 출력할 것이다.
먼저 html 태그를 잡아주자.
<input type="text" id="headCount">
<button type="button" id="sbmNmb" onclick="headcount()">인원제출</button>
<button type="button" id="showTable">결과보기</button>
<div id="inputArea"></div>
<br>
<div id="printArea">
<table id="printTable"></table>
</div>
사람 수를 기입할 input 박스를 첫줄에 작성
기입한 사람 수를 제출할 버튼이 두번째
기입된 이름과 점수들을 테이블로 띄울 버튼이 세번째줄에 있다.
이름과 점수를 기입할 input 박스들은 네번째줄에 뜰 것이다.
열자 스크립트.
let name = '';
let html = 0;
let css = 0;
let js = 0;
let cnt = 0;
사용할 전역변수들을 먼저 선언해준다.
function headcount(){
cnt = Number(document.getElementById('headCount').value);
for(let i=0; i<cnt; i++){
document.getElementById('inputArea').innerHTML +=
`Name: <input type="text" id="name${i}"> HTML: <input type="text" id="html${i}"> CSS: <input type="text" id="css${i}"> JS: <input type="text" id="js${i}"><br>`;
}
}
인원제출 버튼을 누르면 작동할 펑션이다.
먼저 cnt 변수에 기입된 인원 수를 대입해준다.
그리고 for문을 둘려서 인원 수만큼 input 박스들을 inputArea로 출력시켜준다.
차후 사용하기 위해 각각의 id에는 i값을 붙여줬다.
중간 테스트. 잘 나타난다.
document.getElementById("showTable").addEventListener('click', function(){
document.getElementById('printTable').innerHTML +=
`<tr><th>Name</th><th>HTML</th><th>CSS</th><th>JS</th><th>Sum</th><th>Average</th><tr>`
console.log(cnt);
for(let i=0; i<cnt; i++){
name = document.getElementById(`name${i}`).value;
html = Number(document.getElementById(`html${i}`).value);
css = Number(document.getElementById(`css${i}`).value);
js = Number(document.getElementById(`js${i}`).value);
let sum = html+css+js;
let avg = (sum/3).toFixed(1);
document.getElementById('printTable').innerHTML +=
`<tr><td>${name}</td><td>${html}</td><td>${css}</td><td>${js}</td><td>${sum}</td><td>${avg}</td><tr>`
}
})
테이블 생성 버튼을 작성해준다.
첫번째줄에서 버튼 클릭을 받아오고..
두번째, 세번째 줄에서는 테이블의 th부.. 즉 최상단 열을 작성해준다.
네번째줄에서 cnt 콘솔출력은 무시해주시길. 처음에 전역번수 선언도 안하고는 뭐가 문제인가해서 테스트 삼아 넣어봤던거다..
다섯번째 줄 이하는 for문을 역시 cnt만큼 돌리는데, 각각의 요소들의 i 값을 가져다가 printTable 안에 HTML로 테이블 형태를 잡아 추가해줬다.
의도했던대로 출력된다.
내친김에 CSS도 살짝만 써서 꾸며주자.
table{
border: 2px solid black;
background-color: rgb(155, 155, 155);
border-radius: 3px;
}
th{
border: 1px solid black;
width: 60px;
border-radius: 3px;
background-color: rgb(221, 221, 221);
}
tr{
border: 1px solid black;
border-radius: 3px;
}
td{
border: 1px solid black;
text-align: center;
border-radius: 3px;
background-color: rgb(250, 250, 250);
}
input[type=text]{
width: 60px;
}
간단하게만.
훨씬 깔끔해졌다.
'Programming Language > Javascript' 카테고리의 다른 글
[Javascript] JSON 들여다보기 (0) | 2022.11.09 |
---|---|
[Javascript] 야구게임 구성하기 (0) | 2022.11.08 |
[Javascript] 로또를 만들어보자 (0) | 2022.11.07 |
[Javascript] Set, Map 기본 개념 (0) | 2022.11.07 |
[Javascript] 조건문, 반복문 (0) | 2022.11.02 |