코드 좀 줄이고 싶어요

코드 좀 줄이고 싶어요

QA

코드 좀 줄이고 싶어요

답변 3

본문

소스 참고해서 만들고 있는데...

2줄은 했습니다.

이런 식으로 20행을 해야 하는데..

스크립트 엄청 길어질거 같은데..

줄일 수 있을련지요,,,

 

그리고  가로 합계금액은 class로 지정하고

 

맨밑에 all_total로 총계를 뽑고 싶은데...자바 class부분은 

어떻게 처리해야 할지요,, 

<script language='javascript'> 

    function sum(){ 

        var f1_1 = document.getElementById('f1_1'); 

        var f1_2 = document.getElementById('f1_2'); 

        var f1_3 = document.getElementById('f1_3'); 

        var f1_4 = document.getElementById('f1_4'); 

        f1_4.value = Number(f1_1.value)*Number(f1_2.value)+Number(f1_3.value); 

 

        var f2_1 = document.getElementById('f2_1'); 

        var f2_2 = document.getElementById('f2_2'); 

        var f2_3 = document.getElementById('f2_3'); 

        var f2_4 = document.getElementById('f2_4'); 

        f2_4.value = Number(f2_1.value)*Number(f2_2.value)+Number(f2_3.value); 

 

    total.value = Number(f1_4.value)+Number(f2_4.value);

    } 

</script> 

 

 

<INPUT  id=f1_1 onkeyup="sum();"> 

<INPUT  id=f1_2 onkeyup="sum();"> 

<INPUT  id=f1_3 onkeyup="sum();"> 

<INPUT  id=f1_4 clase=total><br>

 

<INPUT  id=f2_1 onkeyup="sum();"> 

<INPUT  id=f2_2 onkeyup="sum();"> 

<INPUT  id=f2_3 onkeyup="sum();"> 

<INPUT  id=f2_4 clase=total>

이 질문에 댓글 쓰기 :

답변 3


<script language='javascript'> 
function sum(n) {
    var t = 0;
    for(i=1; i<4; i++) {
        t = t + Number(document.getElementById("f" + n + "_" + i).value);
    }
    document.getElementById("f" + n + "_4").value = t;
}
</script> 
<INPUT  id=f1_1 onkeyup="sum(1);"> 
<INPUT  id=f1_2 onkeyup="sum(1);"> 
<INPUT  id=f1_3 onkeyup="sum(1);"> 
<INPUT  id=f1_4 name=total><br>
<INPUT  id=f2_1 onkeyup="sum(2);"> 
<INPUT  id=f2_2 onkeyup="sum(2);"> 
<INPUT  id=f2_3 onkeyup="sum(2);"> 
<INPUT  id=f2_4 name=total>

jquery로 처리하면 훨씬 간단하게 될 것 같은데 javascript로만 하셔서... 

존경스럽습니다,,정말 간결하고 잘되네요~

1과2를 곱한뒤에 3은 더해야 하는데
이경우 어디를 고쳐야 하는지요,
그리고
각 total이 나오면

맨밑에 all_total 을 내고 싶은데..도와주십시오.
늘 맨입으로 받아먹어서 죄송스러워요,,,


function sum(n) {
	var t = new Array();
	for(i=1; i<4; i++) {
		t.push(Number(document.getElementById("f" + n + "_" + i).value));
	}
	document.getElementById("f" + n + "_4").value = (t[0] * t[1]) + t[2];
}

아 무조건 덧셈인 줄 알았네요.
저렇게 바꾸시면 됩니다.

원하는 대로 잘됩니다,,정말 간결하게 되었군요,,
염치없지만
<INPUT  id=f1_4 name=total>
이부분들의 총계 all_total이 나오게 하는거 좀 부탁드려볼 수 있을까요,,
제 실력으로는 어려워서요,,,

document.getElementsByName("all_total")[0].value = Number(document.getElementsByName("total")[0].value) + Number(document.getElementsByName("total")[1].value);
이거 함수 안에 추가하시고

<input type="text" name="all_total">
이건 제일 하단에 추가

앞에 f1부터 f20까지를 변수로 받아 처리하면 되지 않을까 싶습니다.

일일이 다 변수를 입력받아 처리하려면 코드가 길어질수 밖에 없는거라서요

 

일단 다 반영하고 submit 할때 total 변수를 한번에 적용해 주게 되면 할때마다 계산해 주면 되지 않을까 합니다.

일일이 total의 합산값을 보여줄 필요가 없다면요


<script language='javascript'> 
function sum(num){ 
    var f1_1 = document.getElementById('f'+num+'_1'); 
    var f1_2 = document.getElementById('f'+num+'_2'); 
    var f1_3 = document.getElementById('f'+num+'_3'); 
    var f1_4 = document.getElementById('f'+num+'_4'); 
 
    f1_4.value = Number(f1_1.value)*Number(f1_2.value)+Number(f1_3.value); 
 
    var total.value = 0;
    $('.total').each(function() {
        total.value += Number($(this).val());
    });
} 
</script>
 
 
<INPUT  id=f1_1 onkeyup="sum(1);">
<INPUT  id=f1_2 onkeyup="sum(1);"> 
<INPUT  id=f1_3 onkeyup="sum(1);"> 
<INPUT  id=f1_4 class="total" clase=total c><br>
 
<INPUT  id=f2_1 onkeyup="sum(2);">
<INPUT  id=f2_2 onkeyup="sum(2);"> 
<INPUT  id=f2_3 onkeyup="sum(2);"> 
<INPUT  id=f2_4 class="total" clase=total>
</script> 
 
 
<INPUT  id=f1_1 onkeyup="sum(1);"> 
<INPUT  id=f1_2 onkeyup="sum(1);"> 
<INPUT  id=f1_3 onkeyup="sum(1);"> 
<INPUT  id=f1_4 clase=total><br>
 
<INPUT  id=f2_1 onkeyup="sum(2);"> 
<INPUT  id=f2_2 onkeyup="sum(2);"> 
<INPUT  id=f2_3 onkeyup="sum(2);"> 
<INPUT  id=f2_4 clase=total>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로