Quiz.js 3.12 KB
Newer Older
baesangjune's avatar
Quiz.js    
baesangjune committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import React from 'react';
// import logo from './logo.svg';
import './Quiz.css';


const question = [
  { Q: "6 X 4 ?", Choose: [6, 12, 18, 24], A: "" },
  { Q: "3 + 3 ?", Choose: [2, 4, 6, 8], A: "" },
  { Q: "3 - 1 ?", Choose: [1, 2, 3, 4], A: "" }
]

class Quiz extends React.Component {
  constructor(props) {
    super(props)
    // this.setAnswer = this.setAnswer.bind(this)
    this.setQuestion = this.setQuestion.bind(this)
    this.ShowQuiz = this.ShowQuiz.bind(this)
baesangjune's avatar
ing    
baesangjune committed
18
19
20
21
22
23
    this.answerbox = this.answerbox.bind(this)
    this.state = {
      ...question[0],
      i: 0,
      page: 0,
    }
baesangjune's avatar
   
baesangjune committed
24
    // this.textInput = React.createRef()
baesangjune's avatar
ing    
baesangjune committed
25
        
baesangjune's avatar
Quiz.js    
baesangjune committed
26
27
  }
  ShowQuiz() {
baesangjune's avatar
ing    
baesangjune committed
28
    this.setState({ page: 1 })
baesangjune's avatar
Quiz.js    
baesangjune committed
29
30
  }
  setQuestion() {
baesangjune's avatar
   
baesangjune committed
31
    //값이 입력되지 않은채로 넘겨졌을 때 문제 해결 해야 함-sj-
baesangjune's avatar
ing    
baesangjune committed
32
33
    this.setState({ ...question[this.state.i + 1], i: this.state.i + 1 })

baesangjune's avatar
Quiz.js    
baesangjune committed
34
  }
baesangjune's avatar
   
baesangjune committed
35
//answerbox - answer박스의 값을 네임리스트로 받아와서 값을 localstorage에 저장 
baesangjune's avatar
ing    
baesangjune committed
36
37
38
39
40
41
42
43
44
45
  answerbox() {
    let answers = document.getElementsByName('answer');
    let count = answers.length
    // var checked_index = -1;
    var checked_value = '';

    for (var i = 0; i < count; i++) {
      if (answers[i].checked) {
        // checked_index = i;
        checked_value = answers[i].value;
baesangjune's avatar
   
baesangjune committed
46
        localStorage.setItem('answer-'+i, checked_value)
baesangjune's avatar
ing    
baesangjune committed
47
48
49
50
51
52
53
54
55
56
57
58
59
      }
    }
    // alert('선택된 항목 인덱스: ' + checked_index + '\n선택된 항목 값: ' + checked_value);


    // if (document.getElementsByName("answer")[i].checked === true) {
      
    //   alert(document.getElementsByName("answer")[i].value);
    // }


  }

baesangjune's avatar
Quiz.js    
baesangjune committed
60
61
62
63
64
65
66
  // setAnswer(e) {
  //   question[this.state.i]["A"] = e.target.value
  //   this.setState({ v: e.target.value })
  //   console.log(this.state)
  //   console.log(question)
  // }
  render() {
baesangjune's avatar
ing    
baesangjune committed
67
    if (this.state.page === 1) {
baesangjune's avatar
   
baesangjune committed
68
      this.answerbox()
baesangjune's avatar
ing    
baesangjune committed
69
      if (this.state.i === question.length) {
baesangjune's avatar
Quiz.js    
baesangjune committed
70
71
72
73
74
75
76
77
78
79
        return (
          <div>
            <h2>수고하셨습니다!</h2>
          </div>
        )
      }
      else {
        return (
          <div className="Quiz">
            <h2>Q:{this.state.Q}</h2>
baesangjune's avatar
ing    
baesangjune committed
80
81
            {this.state.Choose.map((a) =>
              <div>
baesangjune's avatar
   
baesangjune committed
82
                <input type="radio" name='answer' id={a} value={a} /*ref={this.textInput}*/ /> 
baesangjune's avatar
ing    
baesangjune committed
83
                <label for={a}>{a}</label>
baesangjune's avatar
   
baesangjune committed
84
                
baesangjune's avatar
ing    
baesangjune committed
85
86

              </div>)}
baesangjune's avatar
Quiz.js    
baesangjune committed
87
88
89
90
91
92
            <div className="App">
              정답을 입력하세요
            </div>
            {/* <div>
              <input type="text" value={this.state.v} name="A" onChange={this.setAnswer} />
            </div> */}
baesangjune's avatar
   
baesangjune committed
93
            <button type="button" onClick={setTimeout(this.setQuestion, 2000)}>다음</button>
baesangjune's avatar
Quiz.js    
baesangjune committed
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
          </div>
        )
      }
    }
    else {
      return (
        <div className="Box">
          <div className="Main">
            <h1> Calculus</h1>
          </div>
          <div className="Name">
            이름을 입력하세요
          <input onChange={(event) => { console.log(event.target.value) }} />
          </div>
          <button className="QuizStart" onClick={this.ShowQuiz}>Quiz Start !</button>
        </div>

      )
    }
  }
}

baesangjune's avatar
ing    
baesangjune committed
116
export default Quiz;