javascript
  • jquery
  • 2017-12-19 3 views 0 likes 
    0

    나는 퀴즈 앱을 만들어야하는 과제를 수행하고 있습니다. 한 번에 하나씩 질문을 표시합니다. 사용자는 무선 입력 그룹에서 4 개의 대답 중 하나를 선택해야합니다.자바 스크립트 라디오 입력

    var counter = 0; 
    var questions = ["<h3>What is the 9 + 10 </h3>\n\ 
            <input type='radio' name = 'radio' class='rad' value ='19'>19\n\ 
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
            <input type='radio' name = 'radio' class='rad' value ='44'>66\n\ 
            <input type='radio' name = 'radio' class='rad' value ='1'>123 ", 
        "<h3>What is the 5 + 10 </h3>\n\ 
            <input type='radio' name = 'radio' class='rad' value ='15'>15\n\ 
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
            <input type='radio' name = 'radio' class='rad' value ='44'>44\n\ 
            <input type='radio' name = 'radio' class='rad' value ='1'>12 " 
    ]; 
    
    document.getElementById("question").innerHTML = questions[counter]; 
    document.querySelector('.rad').addEventListener("change", nextQuestion); 
    
    function nextQuestion() { 
        console.log(counter); 
        counter++; 
        document.getElementById("question").innerHTML = questions[counter]; 
    } 
    
    +0

    내가 한 번에 질문 하나를 표시하고, 그것은 단지 첫 번째 입력이 허용하는 내 경우에는 내가 입력 중 하나를 선택해야 다음 질문으로 진행 답변으로 4 개 라디오 입력을 가지고 나에게 진행하고, 다른 것은 아무것도하지 않는다. – filipes95

    답변

    2

    document.querySelector('.rad') 만 매우 첫 번째 라디오 버튼을 의미합니다 (: 사용자는 다른 응답을 얻을 수없고, 제 무선 입력을 선택하는 경우에만 작동 어떤 이유

    은 .. 여기서

    내 코드 하나는 19이고 다른 하나는 없음). 아마도 event delegation을 원할 것입니다.

    document.querySelector('.rad').addEventListener("change", nextQuestion);document.getElementById("question").addEventListener("change", nextQuestion);으로 바꿉니다.

    이것은 change 이벤트 bubbling up에서 question 요소로 인해 작동합니다.

    +0

    이 솔루션은 정말 잘 작동했습니다. 감사합니다. – filipes95

    -1

    document.querySelector('.rad').addEventListener("change", nextQuestion);을 기능에 추가하십시오. 그래서 일종의 재귀적인 호출이고 탈옥의 조건을 넣습니다.

    var counter = 0; 
     
    
     
    var questions = ["<h3>What is the 9 + 10 </h3>\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='19'>19\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='44'>66\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='1'>123 ", 
     
        "<h3>What is the 5 + 10 </h3>\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='15'>15\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='44'>44\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='1'>12 ", 
     
            "<h3>What is the 12 + 10 </h3>\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='15'>25\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='44'>64\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='1'>22 ", 
     
            "<h3>What is the 52 + 10 </h3>\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='15'>25\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='23'> 23\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='44'>64\n\ 
     
            <input type='radio' name = 'radio' class='rad' value ='1'>62 " 
     
    ]; 
     
    
     
    
     
    nextQuestion(); 
     
    
     
    function nextQuestion() { 
     
    if(questions.length != counter) { 
     
        console.log(counter); 
     
        document.getElementById("question").innerHTML = questions[counter]; 
     
        document.querySelector('.rad').addEventListener("change", nextQuestion); 
     
         counter++; 
     
        } 
     
    }
    <div id="question"></div>

    +0

    'document.querySelector ('. rad')'는 여전히 단일 요소만을 참조합니다. – Xufox

    +0

    나는 그렇게 생각하지 않는다. 올바르게 작동하는 스 니펫을 실행하십시오. 전체 실행 코드가 제공됩니다. 너의 대답을 좋아하지 마라. 투표를보고 나서 투표하십시오. –

    +0

    _ 자신 _ 스 니펫을 실행하려고 시도 했습니까? 첫 번째 질문에서 "23", "66"또는 "123"을 누르면 아무 일도 일어나지 않습니다. "19"만이 OP의 원래 문제입니다. 허락하신다면, 코드는 _every_ 질문의 첫 번째 옵션에 대해 작동하지만, 그럼에도 불구하고 _first_ 옵션 일뿐입니다. 그게 제가 쓰고있을 때 의미했던 것입니다. ""여전히 하나의 요소 **만을 참조 할 것입니다. " 그걸 다른 것으로 해석 했니? – Xufox

    관련 문제