[JavaScript] 사용자가 입력한 값을 배열에 차곡 차곡 담기

    문제점

     

            * 개구리 , ["개구리"] 는 확인이 되지만 뒤이은 바나나 새로운 배열에 담김 (즉, 값들이 연이어 이어지지 않음 )

     

     

     나의 로직
            1. push()를 이용해 배열의 맨 뒤에 요소를 추가한다
            2. toString으로 하나의 문자열로 출력한다.
            
            * 값을 입력하고 입력 버튼을 누를 때 배열에 하나씩 담는 구문을 작성해보자
            * 값을 입력받는 변수 따로 받아야 할까?

     

    전체코드

    소요시간 30m

    완성도  60%

            <fieldset>
                <legend>입력</legend>
                <input type="text" name="str" id="str"> <button onclick="test1();">입력</button>
            </fieldset>
        
            <script>
                function test1(){
                    var str = document.getElementById("str").value;
    
                       var arr = [str];
                       arr.push("");
    
                    console.log(str);
                    console.log(arr);
    
                }
            </script>
            <br><br>
            
            <p style="border: 1px solid red ; width:500px ; height:20px;">이 부분에 정답이 출력 될 수 있도록 하세요</p>
    
            <button>출력</button>
            <br><br>
    
        
    

     

    위의 코드의 문제점은 영원히 입력한 그 하나의 값만! 새로이 업데이트 되어서 콘솔창에 출력된다는 점이다.

    이것을 보완하기 위해서는 어떻게 해야할까?

    바로 전역 변수인 빈 배열을 생성한 뒤, 그 안에 사용자가 입력한 값들을 차곡 차곡 담으면된다.

     

    수정된 코드는 다음과 같다

            <script>
    
                var data = new Array();
    
                function input(){
                    var str = document.getElementById("str");
                    data.push(str.value);
    
    
                    console.log(data);
    
                }
            </script>

     

    사용자가 입력한 값을 배열에 차곡 차곡 담기 

     

    1. 전역 변수로 빈 배열을 생성한다.

    2. id가 "str"인 (사용자가 입력한 값이 담겨있는) input 요소 객체를 str이라는 변수에 담아준다.

    3. data라는 빈 배열이 있는 변수에 요소 객체에 담긴 그 ! 값 !을 넣어준다.

       (2번 과정은 input 요소 객체만 담겨있지, 사용자가 입력한 값(== .value)은 담겨있지 않다)

       이때, push() 메소드를 이용해서 배열의 맨 뒤에 차곡 차곡 담아주면 된다. 

     

    정상적으로 값이 차곡 차곡 담긴 것을 확인할 수 있다.

     

     

    이제 출력을 하면된다.

                function printTest(){
                    var print = document.getElementById("print");
                    print.innerHTML = data;
                    
                }

     

    모범답안은 다음과 같다 

        	function printTest(){
            	var print2 = document.getElementById("print2");
            	var str = data.join(',');
            	print2.innerHTML = str;
        	}

     

    var str = data.join(','); < - 나는 이 구문을 따로 기술하지 않았는데 

     

     

    출력이 되었다.

     

    내 구문에 이상이 없는 걸까? 

    기능이 구현되더라도 어쩌다가 운으로 맞춘건지 아니면 가능한 여러가지 방법 중의 하나인건지 

    내 코드로 기술 했을 때 다른 코드에는 문제가 없는 건지, 이런 것들이 궁금하다 ..!

     

     

    전체코드

     

    더보기
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
        <h1>배열 실습 문제3</h1>
        <h4>문자열을 여러 개 입력 받은 후 출력 버튼 클릭시 입력했던 모든 문자열이 출력되도록 만드세요
            <br>예) 개구리 -> 입력, 바나나 -> 입력, 복숭아 -> 입력 <br>
            출력 : 개구리,바나나,복숭아
        </h4>
    
            <fieldset>
                <legend>입력</legend>
                <input type="text" name="str" id="str"> <button onclick="input();">입력</button>
            </fieldset>
            <p style="border: 1px solid red ;" id="print">이 부분에 정답이 출력 될 수 있도록 하세요</p>
            <button onclick="printTest();">출력</button>
            <script>
    
                var data = new Array();
    
                function input(){
                    var str = document.getElementById("str");
                    data.push(str.value);
    
    
                    console.log(data);
    
                }
    
                function printTest(){
                    var print = document.getElementById("print");
                    print.innerHTML = data;
                    
                }
            </script>
            <br><br>
            
    
        
            <br><br>
    
    
    
    </body>
    </html>

     

     


     

     

    보완할 점

     

    * p tag에 id 부여하기

    * script 단에서 전역 변수로 빈 배열 선언하기

    * 사용자가 입력한 값을 배열에 차곡 차곡 담기 < 위의 상세 내용 참조

     

     

    728x90

    댓글