Quiz1
주관식 1문제 스타일(자바스크립트/제이쿼리)
// 선택자
const question = $(".question");
const questionNum = $(".num");
const questionBtn = $(".confirm-btn");
const questionAnswer = $(".confirm-answer");
const questionEx = $(".confirm-ex");
// 문제 정보
const quizNum = 1;
const quizAsk = "태그 중에서 유일하게 블록구조를 감쌀 수 있는 태그는?";
const quizAnswer = "<a>";
const quizEx = "HTML5에서 <a> 태그는 유일하게 블록 구조를 감쌀 수 있는 태그입니다.";
// 문제 출력
questionNum.html(quizNum);
question.html(quizAsk);
questionAnswer.html(quizAnswer);
questionEx.html(quizEx);
// 정답 숨기기
questionAnswer.hide();
questionEx.hide();
// 정답 확인 (버튼을 누르면 버튼은 사라지고 정답과 해설은 나타나게)
questionBtn.click(function(){
questionBtn.hide();
questionAnswer.show();
questionEx.show();
});
// 선택자
const question = document.querySelector(".question");
const questionNum = document.querySelector(".num");
const questionBtn = document.querySelector(".confirm-btn");
const questionAnswer = document.querySelector(".confirm-answer");
const questionEx = document.querySelector(".confirm-ex");
// 문제 정보
const quizNum = 1;
const quizAsk = "태그 중에서 유일하게 블록구조를 감쌀 수 있는 태그는?";
const quizAnswer = "<a>";
const quizEx = "HTML5에서 <a> 태그는 유일하게 블록 구조를 감쌀 수 있는 태그입니다.";
// 문제 출력
questionNum.innerHTML = quizNum;
question.innerHTML = quizAsk;
questionAnswer.innerHTML = quizAnswer;
questionEx.innerHTML = quizEx;
// 정답 숨기기
questionAnswer.style.display = "none";
questionEx.style.display = "none";
// 정답 확인
questionBtn.addEventListener("click", function(){
questionBtn.style.display = "none";
questionAnswer.style.display = "block";
questionEx.style.display = "block";
});
Quiz2
주관식 3문제 스타일(자바스크립트/제이쿼리)
// 선택자
const question = $(".question");
const questionNum = $(".num");
const questionBtn = $(".confirm-btn");
const questionAnswer = $(".confirm-answer");
const questionEx = $(".confirm-ex");
// 문제 정보
const quizNum = 1;
const quizAsk = "태그 중에서 유일하게 블록구조를 감쌀 수 있는 태그는?";
const quizAnswer = "<a>";
const quizEx = "HTML5에서 <a> 태그는 유일하게 블록 구조를 감쌀 수 있는 태그입니다.";
// 문제 출력
questionNum.html(quizNum);
question.html(quizAsk);
questionAnswer.html(quizAnswer);
questionEx.html(quizEx);
// 정답 숨기기
questionAnswer.hide();
questionEx.hide();
// 정답 확인 (버튼을 누르면 버튼은 사라지고 정답과 해설은 나타나게)
questionBtn.click(function(){
questionBtn.hide();
questionAnswer.show();
questionEx.show();
});
// 선택자
const questionQuiz = document.querySelectorAll(".quiz");
const questionAsk = document.querySelectorAll(".question");
const questionNum = document.querySelectorAll(".num");
const questionBtn = document.querySelectorAll(".confirm-btn");
const confirmBottom = document.querySelectorAll(".confirm-bottom");
const questionAnswer = document.querySelectorAll(".confirm-answer");
const questionEx = document.querySelectorAll(".confirm-ex");
// 문제 정보
const quizInfo = [
{
quizNum : 1,
quizAsk : "글씨의 색을 변경하는 CSS 속성은 무엇인가요?",
quizAnswer : "color 속성",
quizEx : "글씨 속성은 color 값을 이용합니다."
},
{
quizNum : 2,
quizAsk : "position: relative는 언제 사용하나요?",
quizAnswer : "color 속성",
quizEx : "글씨 속성은 color 값을 이용합니다."
},
{
quizNum : 3,
quizAsk : "콘텐츠 요소를 가운데로 오게 하는 방법 3가지 이상을 설명하시오.",
quizAnswer : "color 속성",
quizEx : "글씨 속성은 color 값을 이용합니다."
}
];
// 문제출력 forEach
questionQuiz.forEach((elem, index) => {
questionNum[index].innerHTML = quizInfo[index].quizNum;
questionAsk[index].innerHTML = quizInfo[index].quizAsk;
questionAnswer[index].innerHTML = quizInfo[index].quizAnswer;
questionEx[index].innerHTML = quizInfo[index].quizEx;
});
// 정답 숨기기
for(let i = 0; i<quizInfo.length; i++){
questionAnswer[i].style.display = "none";
questionEx[i].style.display = "none";
confirmBottom[i].style.display = "none";
}
// 정답 확인
questionBtn.forEach(elem => {
elem.addEventListener("click", function(){
this.style.display = "none";
this.nextElementSibling.style.display = "block";
});
});
Quiz3
객관식 1문제 스타일(자바스크립트/제이쿼리)
// 선택자
const questionAsk = $(".question");
const questionNum = $(".num");
const questionBtn = $(".confirm-btn");
const questionAnswer = $(".confirm-answer");
const questionEx = $(".confirm-ex");
const questionBottom = $(".confirm-bottom");
const questionSelect = $(".select");
const questionChoice = $(".choice");
// 문제 정보
const quizInfo = [
{
quizNum : 1,
quizAsk : "다음 중 시멘틱 태그는 무엇인가요?",
quizChoice : ["div 태그", "h1 태그", "span 태그", "main 태그"],
quizAnswer : "4",
quizEx : "시멘틱 태그는 의미가 부여된 태그로서 main 태그는 사이트에서 중요한 컨텐츠에 한번만 사용할 수 있습니다."
}
]
// 문제 출력
function updateQuiz(){
questionNum.html(quizInfo[0].quizNum);
questionAsk.html(quizInfo[0].quizAsk);
questionAnswer.html(quizInfo[0].quizAnswer);
questionEx.html(quizInfo[0].quizEx);
// 보기 출력
questionChoice.each(function(i){
$(this).html(quizInfo[0].quizChoice[i])
});
// 정답 감추기
questionAnswer.hide();
questionEx.hide();
};
updateQuiz();
// 정답 확인
function answerQuiz(){
questionSelect.each(function(index){
if(questionSelect[index].checked == true){
// 정답과 사용자의 정답이 일치하는지 확인
if(questionSelect[index].value == quizInfo[0].quizAnswer){
// 정답인경우
// alert("정답입니다.");
questionAnswer.html("정답입나다.")
questionBtn.hide();
questionAnswer.show();
questionEx.show();
} else {
// 오답입니다.
questionAnswer.html("오답입니다.")
questionBtn.hide();
questionAnswer.show();
questionEx.show();
}
}
});
}
questionBtn.on("click", answerQuiz);
// 선택자
const questionAsk = document.querySelector(".question");
const questionNum = document.querySelector(".num");
const questionBtn = document.querySelector(".confirm-btn");
const questionAnswer = document.querySelector(".confirm-answer");
const questionEx = document.querySelector(".confirm-ex");
const questionBottom = document.querySelector(".confirm-bottom");
const questionSelect = document.querySelectorAll(".select");
const questionChoice = document.querySelectorAll(".choice");
// 문제 정보
const quizInfo = [
{
quizNum : 1,
quizAsk : "다음 중 시멘틱 태그는 무엇인가요?",
quizChoice : ["div 태그", "h1 태그", "span 태그", "main 태그"],
quizAnswer : "4",
quizEx : "시멘틱 태그는 의미가 부여된 태그로서 main 태그는 사이트에서 중요한 컨텐츠에 한번만 사용할 수 있습니다."
}
];
// 문제 출력
function updateQuiz(){
questionNum.innerHTML = quizInfo[0].quizNum;
questionAsk.innerHTML = quizInfo[0].quizAsk;
questionAnswer.innerHTML = quizInfo[0].quizAnswer;
questionEx.innerHTML = quizInfo[0].quizEx;
for(let i = 0; i>questionChoice.length; i++){
questionChoice[i].innerHTML = quizInfo[0].quizChoice[i];
}
// 정답 감추기
questionAnswer.style.display = "none";
questionEx.style.display = "none";
}
updateQuiz();
// 정답 확인
function answerQuiz(){
for (let i=0; i>questionSelect.length; i++){
if(questionSelect[i].checked == true){
if(questionSelect[i].value == quizInfo[0].quizAnswer){
questionAnswer.innerHTML = "정답입니다.";
questionBtn.style.display = "none";
questionAnswer.style.display = "block";
} else {
questionAnswer.innerHTML = "오답입니다.";
questionBtn.style.display = "none";
questionAnswer.style.display = "block";
questionEx.style.display = "block";
}
}
}
}
questionBtn.addEventListener("click", answerQuiz);
Quiz4
객관식 3문제 스타일(자바스크립트/제이쿼리)
// 선택자
const questionQuiz = document.querySelector(".quiz");
const questionBtn = document.querySelector(".confirm-btn");
const questionResult = document.querySelector(".confirm-result");
// 문제 정보
const quizInfo = [
{
quizNum : 1,
quizAsk : "다음 중 시멘틱 태그는 무엇인가요?",
quizChoice : {
1: "<a> 태그",
2: "<br> 태그",
3: "<em> 태그",
4: "<main> 태그",
},
quizAnswer : 4,
quizEx : "<main> 태그는 시멘틱 태그입니다."
},
{
quizNum : 2,
quizAsk : "다음 중 CSS의 단위로 맞지 않는 것은 무엇인가요?",
quizChoice : {
1: "em",
2: "rem",
3: "vm",
4: "ch",
},
quizAnswer : 3,
quizEx : "vm 단위는 없습니다."
},
{
quizNum : 3,
quizAsk : "다음 중 자바스크립트 언어와 관련이 없는 것은 무엇인가요?",
quizChoice : {
1: "react.js",
2: "jquery.js",
3: "vue.js",
4: "c++",
},
quizAnswer : 4,
quizEx : "c++는 자바스크립트 언어와 관련이 없습니다."
}
];
// 문제 만들기
function updataQuiz(){
const output = [];
quizInfo.forEach((currentQuestion, questionNumber)=>{
output.push(`
<h2>< 문제<span class="num">${currentQuestion.quizNum}</span> ></h2>
<p class="question">${currentQuestion.quizAsk}</p>
<div class="selects">
<label>
<input class="select" type="radio" name="select${questionNumber}" value="1">
<span class="choice">${currentQuestion.quizChoice[1]}</span>
</label>
<label>
<input class="select" type="radio" name="select${questionNumber}" value="2">
<span class="choice">${currentQuestion.quizChoice[2]}</span>
</label>
<label>
<input class="select" type="radio" name="select${questionNumber}" value="3">
<span class="choice">${currentQuestion.quizChoice[3]}</span>
</label>
<label>
<input class="select" type="radio" name="select${questionNumber}" value="4">
<span class="choice">${currentQuestion.quizChoice[4]}</span>
</label>
</div>
`);
});
questionQuiz.innerHTML = output.join(' ');
}
updataQuiz();
// 결과 확인하기
function showResults(){
const selectContainers = questionQuiz.querySelectorAll(".selects");
let numCorrect = 0;
//사용자가 정답을 체크 == 문제의 정답
quizInfo.forEach((currentQuestion, questionNumber ) => {
const selectContainer = selectContainers[questionNumber];
const resultSelector = `input[name=select${questionNumber}]:checked`;
const resultAnswer = (selectContainer.querySelector(resultSelector) || {}).value;
if(resultAnswer == currentQuestion.quizAnswer){
numCorrect++;
selectContainers[questionNumber].style.color = "blue";
} else {
selectContainers[questionNumber].style.color = "red";
}
});
questionResult.innerHTML = `${quizInfo.length} 문제 중에 ${numCorrect} 문제를 맞추었습니다.`;
}
questionBtn.addEventListener("click", showResults);