채택완료

라디오 합산 하는데...

2019-03-26 (화) 14:38:37 1,483

라디오 버튼 #<?php echo $i?>_3 을 클릭하면

#e<?php echo $i?>_4 값의 합산값을 #h1_2 넣는것입니다.

잘 됩니다. 그런데 

클릭할 때마다 합산되어 코드가 잘못된거 같습니다.

방법이 없을까요?

  <script>

 
var sum = 0;
<?php

for ($i = 1, $wr=73; $i <=15; $i++, $wr+=7) {

?>


$('#<?php echo $i?>_3').on('click', function() { 
    
    $('#e<?php echo $i?>_4').each( function() {
        sum += Number($(this).val());
    });
    $('#h1_2').val(sum.toFixed(2)); 
});


<?

}

?>

</script>

|

답변 3개 / 댓글 5개

채택된 답변
+20 포인트

예전에 중복체크 가능한 체크박스들 값을 합산 매긴 적이 있는데...

전 클릭이벤트로 하지않고 체인지 이벤트로 해서...

체크가 되면 체크된 value 값을 += 처리하고 체크가 해제되면 value 값을 -= 처리하는 식으로 구현했던 기억이 나네요...

Copy
// 이건 제가 짰던 코드 그대로 복붙한건데...

// 그대로 가져다가 마크업에 맞게 선택자 수정해서 써도.. 될지는 모르겠네요...;;

$(el).find('li').each(function(j, el){
    var $check = $(this).find('input');

   

    $check.on('change', function(){
        if($(this).is(':checked'))
            score += parseInt($(this).val());
        else
            score -= parseInt($(this).val());
    });
});

답변에 대한 댓글 1개

2019-03-26 (화) 15:05:16
아 좋은 방법 같습니다.!
참고해보겠습니다.

    $('#e<?php echo $i?>_4').each( function() { <---이 구문 자체가 용도가 틀린 것 같군요

each라는 것이 class='abc' 같이 하여 여러개가 있을 때 사용하는 것이지

#e1_4 라면 id를 나타내는 것일텐데 id라면 하나 밖에 없을테고 each를 사용하지는 않죠

for문을 없애고 1_3 ~ 15_3 은 class='a'

e1_4 ~ e15_4 는 class='b' 이렇게 부여한 후 아래처럼 하면 됩니다

$(funcrion(){

$('.a').on('click', function() {    

  sum=0;
    $('.b').each( function() {
        sum += Number($(this).val());
    });
    $('#h1_2').val(sum.toFixed(2)); 
});

});

답변에 대한 댓글 3개

2019-03-27 (수) 03:23:34
감사합니다. a 한개만 클릭해도 b클래스의 모든 값이 합산되어 나오네요
전체 합산을 구하도록 만들어진 겁니다
어떤 작동을 원하나요?
2019-03-27 (수) 12:20:28
선택한 것만 합산을 원하는 것이 었습니다.

`sum` 을 on click event 처리루틴 안쪽에 넣어보세요.

Copy
...

    $('#<?php echo $i?>_3').on('click', function() {
        var sum = 0;

         ...

답변에 대한 댓글 1개

2019-03-26 (화) 15:01:25
원래 거기에 있던 거를 합산이 안되어
위토즈님이 위로 빼보라고 해서 뺐더니 합산은 잘되는데
클릭할 때마다 값이 증가되어 버려서요,,ㅋ

답변을 작성하려면 로그인이 필요합니다.