<할일..>
메인 페이지에 선택한 용량에 따른 결과페이지에 결과개수 출력하기
const endPoint = 15;
const select = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
const arr =new Array(0);
let flavor=0;
let count=0;
function checkOnlyOne(element) {
const checkboxes
= document.getElementsByName("size");
checkboxes.forEach((cb) => {
cb.checked = false;
})
element.checked = true;
}
function calResult() {
let size=begin();
console.log(select);
const result = select.indexOf(Math.max(...select));
console.log(result);
for(let i=0;i<=select.length;i++){
if(select[i]===select[result] && count<flavor-1){
if(i===result){
continue;
}
console.log(select[i]);
arr.push(i);
count++;
}
else if(select[i]===select[result]-1 && count<flavor-1){
if(i===result){
continue;
}
console.log(select[i]);
arr.push(i);
count++;
}
}
console.log(arr);
return result;
}
function setResult(){
let point = calResult();
const resultName = document.querySelector('.resultname');
resultName.innerHTML = infoList[point].name;
const resultImg = document.createElement('img');
const imgDiv = document.querySelector('#resultImg');
const imgURL = 'img/image-' + point + '.png';
resultImg.src = imgURL;
resultImg.alt = point;
resultImg.classList.add('img-fluid');
imgDiv.appendChild(resultImg);
const resultDesc = document.querySelector('.resultDesc');
resultDesc.innerHTML = infoList[point].desc;
}
function goResult(){
qna.style.WebkitAnimation = "fadeOut 1s";
qna.style.animation = "fadeOut 1s";
setTimeout(() => {
result.style.WebkitAnimation = "fadeIn 1s";
result.style.animation = "fadeIn 1s";
setTimeout(() => {
qna.style.display = "none";
result.style.display = "block"
}, 450)})
setResult();
}
function addAnswer(answerText, qIdx, idx){
const a = document.querySelector('.answerBox');
const answer = document.createElement('button');
answer.classList.add('answerList');
answer.classList.add('my-3');
answer.classList.add('py-3');
answer.classList.add('mx-auto');
answer.classList.add('fadeIn');
a.appendChild(answer);
answer.innerHTML = answerText;
answer.addEventListener("click", function(){
const children = document.querySelectorAll('.answerList');
for(let i = 0; i < children.length; i++){
children[i].disabled = true;
children[i].style.WebkitAnimation = "fadeOut 0.5s";
children[i].style.animation = "fadeOut 0.5s";
}
setTimeout(() => {
const target = qnaList[qIdx].a[idx].type;
for(let i = 0; i < target.length; i++){
select[target[i]] += 1;
}
for(let i = 0; i < children.length; i++){
children[i].style.display = 'none';
}
goNext(++qIdx);
},450)
}, false);
}
function goNext(qIdx){
if(qIdx === endPoint){
goResult();
return;
}
const q = document.querySelector('.qBox');
q.innerHTML = qnaList[qIdx].q;
for(let i in qnaList[qIdx].a){
addAnswer(qnaList[qIdx].a[i].answer, qIdx, i);
}
const status = document.querySelector('.statusBar');
status.style.width = (100/endPoint) * (qIdx+1) + '%';
}
function begin() {
let value = $("input[name='size']:checked").val();
if (value == undefined) {
alert('사이즈를 선택하세요!');
} else {
main.style.WebkitAnimation = "fadeOut 1s";
main.style.animation = "fadeOut 1s";
setTimeout(() => {
qna.style.WebkitAnimation = "fadeIn 1s";
qna.style.animation = "fadeIn 1s";
setTimeout(() => {
main.style.display = "none";
qna.style.display = "block"
}, 450)
let qIdx = 0;
goNext(qIdx);
}, 450);
if (value === 'single') {
flavor=1;
console.log(flavor);
return flavor;
} else if (value === 'pint') {
flavor = 3;
console.log(flavor);
return flavor;
} else if (value === 'quarter') {
flavor = 4;
console.log(flavor);
return flavor;
} else if (value === 'family') {
flavor = 5;
console.log(flavor);
return flavor;
} else if (value === 'half') {
flavor = 6;
console.log(flavor);
return flavor;
}
}
}
/
function begin(){
main.style.WebkitAnimation = "fadeOut 1s";
main.style.animation = "fadeOut 1s";
setTimeout(() => {
qna.style.WebkitAnimation = "fadeIn 1s";
qna.style.animation = "fadeIn 1s";
setTimeout(() => {
main.style.display = "none";
qna.style.display = "block"
}, 450)
let qIdx = 0;
goNext(qIdx);
}, 450);
}
/
<html>
<title>배스킨라빈스 무슨 맛 먹을까?</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="./css/default.css" />
<link rel="stylesheet" href="./css/main.css" />
<link rel="stylesheet" href="./css/qna.css" />
<link rel="stylesheet" href="./css/animation.css" />
<link rel="stylesheet" href="./css/result.css" />
<style>
@font-face {
font-family: "BRBA_B";
src: url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_seven@1.2/BRBA_B.woff")
format("woff");
font-weight: normal;
font-style: normal;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
배스킨라빈스 오늘은 무슨 맛 먹을지 고민이라면?
취향에 딱 맛는 맛을 골라드립니다.
아래 시작하기 버튼을 눌러 시작해보세요!
<div class="check my-5">
<label
><input
type="radio"
name="size"
value="single"
class="size-checkbox me-2"
onclick="checkOnlyOne(this)"
/>싱글(1가지맛)</label
>
<label
><input
type="radio"
name="size"
value="pint"
class="size-checkbox me-2"
onclick="checkOnlyOne(this)"
/>파인트(3가지맛)</label
>
<label
><input
type="radio"
name="size"
value="quarter"
class="size-checkbox me-2"
onclick="checkOnlyOne(this)"
/>쿼터(4가지맛)</label
>
<label
><input
type="radio"
name="size"
value="family"
class="size-checkbox me-2"
onclick="checkOnlyOne(this)"
/>패밀리(5가지맛)</label
>
<label
><input
type="radio"
name="size"
value="halfGallon"
class="size-checkbox me-2"
onclick="checkOnlyOne(this)"
/>하프갤런(6가지맛)</label
>
</div>
<button
type="button"
class="test-btn py-2 px-3 row mx-auto"
onclick="js:begin()"
>
테스트 시작하기
</button>
</section>
<section id="qna" class="mx-auto my-5 py-5 px-3">
<div class="status mx-auto">
<div class="statusBar"></div>
</div>
<div class="qBox my-5 py-3 mx-auto"></div>
<div class="answerBox"></div>
</section>
<section id="result" class="mx-auto my-5 py-5 px-3">
<h1 class="mb-5">내입맛에 딱맞는 아이스크림은?</h1>
<div class="resultname"></div>
<div
id="resultImg"
class="col-lg-3 col-md-4 col-sm-5 col-6 mx-auto"
></div>
<div class="resultDesc mb-5"></div>
<button type="button" class="result-btn py-2 px-3 me-3">
테스트 다시하기
</button>
<button type="button" class="result-btn py-2 px-3 me-3">
근처 매장찾기
</button>
<button type="button" class="result-btn py-2 px-3">공유하기</button>
</section>
<script src="./js/data.js" charset="utf-8"></script>
<script src="./js/start.js" charset="utf-8"></script>
</div>
콘솔창에서 보면 메인페이지에서 선택한 것에 따른 값 전달 O
선택한 사이즈에 따른 배열생성 O
배열 안의 값 = 제일 많이 선택된 맛 다음으로 많이 선택된 맛들
배열의 크기 = 메인페이지에서 전달된 flavor변수 값