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 | 29 | 30 | 31 |
Tags
- Unity
- 게임제작
- 유니티 3D
- 정보처리기사
- 퐁
- 유니티
- Unity #Unity2D #Portal
- 1인 개발
- 1인 게임 개발
- Unity2D
- 필기
- portal
- Pong
- 프로그래머스 #최소힙 #우선순위 큐
- 1인 게임 제작
- 유니티3d
- 자바스크립트
- 자바스크립트 게임
- 1인 게임
- 토이 프로젝트
- 합격
- 정처기
- Vampire Survivors
- 게임 제작
- FPS
- 게임
- 게임 개발
- unity3d
- 3회차
- 정처기 필기
Archives
- Today
- Total
Coding Feature.
JS) 영화 평점 시스템 (select, option의 활용) 본문
const movieNameText = document.createElement('h1');
const movieName = document.createElement('h2');
const whatsYourRating = document.createElement('h1');
const movieRating = document.createElement('select');
const movieRatingStarFive = document.createElement('option');
const movieRatingStarFour = document.createElement('option');
const movieRatingStarThree = document.createElement('option');
const movieRatingStarTwo = document.createElement('option');
const movieRatingStarOne = document.createElement('option');
const averageRatingText = document.createElement('h1');
const averageRating = document.createElement('h2');
const ratingNames = ['', 'onestar', 'twostar', 'threestar', 'fourstar', 'fivestar'];
//나중에 setAttribute를 반복문을 통해서 설정하기 위해 선언한 배열.
movieNameText.textContent = "영화 제목";
movieName.textContent = "아바타 2 : 물의 길";
whatsYourRating.textContent = "당신의 평점은?";
averageRatingText.textContent = "평균 점수?";
movieRating.setAttribute('onchange', 'onChange()');
movieRatingStarFive.textContent = '★★★★★';
movieRatingStarFour.textContent = '★★★★';
movieRatingStarThree.textContent = '★★★';
movieRatingStarTwo.textContent = '★★';
movieRatingStarOne.textContent = '★';
movieRatingStarFive.setAttribute('value','fivestar');
movieRatingStarFour.setAttribute('value','fourstar');
movieRatingStarThree.setAttribute('value','threestar');
movieRatingStarTwo.setAttribute('value','twostar');
movieRatingStarOne.setAttribute('value','onestar');
movieRating.appendChild(movieRatingStarFive);
movieRating.appendChild(movieRatingStarFour);
movieRating.appendChild(movieRatingStarThree);
movieRating.appendChild(movieRatingStarTwo);
movieRating.appendChild(movieRatingStarOne);
document.body.appendChild(movieNameText);
document.body.appendChild(movieName);
document.body.appendChild(whatsYourRating);
document.body.appendChild(movieRating);
document.body.appendChild(averageRatingText);
document.body.appendChild(averageRating);
function onChange(){
averageRating.textContent = movieRating.options[movieRating.selectedIndex].value;
}
select 태그는 onchange 속성을 사용해서 함수를 호출한다.
이때 select 태그 element.selectedIndex는 사용자가 선택한 option의 배열 형태 index를 반환한다.
그리고 element.options[index]를 통해 해당 index에 있는 option의 value 값을 받아올 수 있다.
결국,
movieRating.options[movieRating.selectedIndex].value
위 코드는 사용자가 선택한 option의 value 값을 index를 통해 받아오는 것이다.
자바스크립트를 수정해서
작품성, 연기, 오락성, 스토리 요소를 평가하고
결과값을 평균내는 기능을 만들었다.
const movieNameText = document.createElement('h1');
const movieName = document.createElement('h2');
const averageRatingText = document.createElement('h1');
const averageRating = document.createElement('h2');
const movieRatingSelections = ['작품성', '연기', '오락성','스토리'];
const ratingValues = [1, 2, 3, 4, 5];
const ratingStars = ['★', '★★', '★★★', '★★★★', '★★★★★']
function ShowRatingOptions(){
for (select in movieRatingSelections){
let ratingText = document.createElement('h1');
let movieRatingSelection = document.createElement('select');
let movieRatingDiv = document.createElement('div');
movieRatingDiv.setAttribute("class", "movie-rating-div");
movieRatingSelection.setAttribute("id", movieRatingSelections[select]);
movieRatingSelection.setAttribute("onchange", "onChangeRating()");
ratingText.textContent = movieRatingSelections[select];
let i = 0;
for (ratevalue in ratingValues){
let movieRatingOption = document.createElement('option');
movieRatingOption.setAttribute('value', ratingValues[ratevalue]);
movieRatingOption.textContent = ratingStars[i];
movieRatingSelection.appendChild(movieRatingOption);
i++;
}
movieRatingDiv.appendChild(ratingText);
movieRatingDiv.appendChild(movieRatingSelection);
document.body.appendChild(movieRatingDiv);
}
}
function onChangeRating(){
averageRating.textContent = CalculateAverageRating() + '/' + ratingStars.length;
}
function CalculateAverageRating(){
let averageRateScore = 0;
for(movieRates in movieRatingSelections){
let tempRating = document.getElementById(movieRatingSelections[movieRates]);
averageRateScore += Number(tempRating.options[tempRating.selectedIndex].value);
}
return averageRateScore / movieRatingSelections.length;
}
function ShowAverageRating(){
averageRatingText.textContent = "평균 점수?";
document.body.appendChild(averageRatingText);
document.body.appendChild(averageRating);
}
function ShowMovieName(){
movieNameText.textContent = "영화 제목";
movieName.textContent = "아바타 2 : 물의 길";
document.body.appendChild(movieNameText);
document.body.appendChild(movieName);
}
ShowMovieName();
ShowRatingOptions();
ShowAverageRating();
'Programming Language > JavaScript' 카테고리의 다른 글
JS) 코딩하다가 알게 된 사실. (다른 javascript 파일의 함수 사용) (0) | 2023.01.13 |
---|---|
JS) 영화 평점 시스템 #2 grid, js 파일 여러 개 사용 (0) | 2023.01.12 |
JS) 바닐라 자바스크립트로 CRUD 구현. 맨 땅에 헤딩하기. (0) | 2023.01.11 |
JS) 리스트에 입력한 값 추가하는 웹 (0) | 2023.01.11 |
JS) Creating a site that counts +1 or -1. (0) | 2023.01.09 |