본문 바로가기
jQuery 기초

jquery each()

by 미니의하루 2017. 12. 16.
반응형

jQuery의 반복문 each()

 

여러개의 태그를 select() 함수를 이용해 동시에 속성을 지정한다거나 지우거나 복사하거나 하는 등 한번에 처리를 해야할 때가 있으나,

선택한 태그들을가지고 하나하나 처리를 해야할 때 사용하는 반복문 함수입니다.

 

이번 실습에서는 성적표를 가지고, 각각의 점수를 합하고 평균을 구하는 구분을 each()문을 이용해서 해보도록 하겠습니다.

한사람씩 그리고 과목하나하나의 점수씩 계산이 필요하므로 이중 each()문을 이용해서 구하는 방법입니다.

 

* find() : 현재위치의 태그 하위에 있는 태그를 검색할 때 사용하는 함수 입니다.

* length : jQuery를 이용해 선택한 태그들의 갯수를 구할 때 사용하는 속성 입니다.

* Math.round : javascript 기본구문 반올림 처리하기

* parseInt : 숫자형태 만들기

* 첫번째 each() 반복문에서 tr_this 변수에 jQuery(this)로 저장하는 이유는? 이중 each() 구분형태로 하위 each() 문안에서의 this와 충돌을 막기 위해서 입니다

한국을 좋아하는 외국인 이성친구 만드는 "케이메이트"

 

 

 

SMALL

<head>

    <title>제목 없음</title>

    <style type="text/css">

        /* 구분을 위해 스타일 적용하기 */

        .box { clear:both; margin-top:5px; }

        table>tbody>tr>td.point { color:Blue; }

        table>tbody>tr>td.total { color:red; }

        table>tbody>tr>td.average { color:green; font-weight:bold; }

    </style>

</head>

<body>

    <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>

    

    <!-- jQuery 스터디 html -->

    <div class="box">

        <table id="tb_class" border="1">

            <thead>

                <tr>

                    <th>이름</th><th class="point">국어</th><th class="point">영어</th><th class="point">수학</th><th>총합</th><th>평균</th>

                </tr>

            </thead>

            <tbody>

                <tr>

                    <td>지훈</td><td class="point">82</td><td class="point">57</td><td class="point">93</td><td class="total"></td><td class="average"></td>

                </tr>

                <tr>

                    <td>미나</td><td class="point">55</td><td class="point">79</td><td class="point">54</td><td class="total"></td><td class="average"></td>

                </tr>

                <tr>

                    <td>영진</td><td class="point">60</td><td class="point">85</td><td class="point">67</td><td class="total"></td><td class="average"></td>

                </tr>

                <tr>

                    <td>주연</td><td class="point">100</td><td class="point">46</td><td class="point">82</td><td class="total"></td><td class="average"></td>

                </tr>

                <tr>

                    <td>성준</td><td class="point">91</td><td class="point">29</td><td class="point">55</td><td class="total"></td><td class="average"></td>

                </tr>

            </tbody>

        </table>

    </div>

    

    <div class="box">

        <button type="button" onclick="btn1();">점수계산</button>

    </div>

    

    <script type="text/javascript">

        // jQuery 스터디 스크립트

 

        // 첫번째 each()문에서 한명한명의 학생의 목록을 반복해 돌립니다.

        // 하위 두번째 each()문에서 현재 선택된 학생의 과목 점수를 반복해서 돌리며 합계를 구하고, 과목수를 체크합니다.(구구단 형식)

        function btn1() {

            var tr_scount = jQuery("#tb_class>thead>tr>.point").length; // 과목수체크 - 평균계산시 이용 (과목이 추가될 수 있다고 보고 하드코딩이되지 않도록 .point 클래스를 이용해 과목수를 구함.)

            

            jQuery("#tb_class>tbody>tr").each(function(){

                var tr_this = jQuery(this); // 현재 학생의 태그지정

                var tr_total = 0; // 합계점수

                

                tr_this.find("td.point").each(function(){

                    tr_total+= parseInt(jQuery(this).text()); // 합계를 위해 10진수 형태의 숫자로 변형

                });

                

                tr_this.find(".total").text(tr_total);

                tr_this.find(".average").text(Math.round(tr_total / tr_scount)); // 평균 반올림처리

            });

        }

    </script>

</body>

매일매일 새로운 이성과 톡하는 빠른 매칭 채팅 앱, '데이톡'
반응형
LIST

'jQuery 기초' 카테고리의 다른 글

jquery addClass removeClass  (0) 2017.12.22
jquery attribute selector  (0) 2017.12.18
jquery appendTo()  (0) 2017.12.15
jquery closest()  (0) 2017.12.14
jquery click()  (0) 2017.12.13

댓글