테스트 사이트 - 개발 중인 베타 버전입니다

자바스크립트 좀 봐주세요.. 채택완료

비누거품 8년 전 조회 2,451

자바스크립트로 페이지 로딩 후 동적변수 생성 후 동적변수를 이용해서 합계를 낼려고 하는데요...


</p><p>   <script type="text/javascript">
   $(document).ready(function() {
    sum_tot();
   });
   
   function sum_tot(){ // 전체 합계
   
  for( k=4; k < 20; k++) {
   
 window["pay_"+k] = '0';   
          
         sum_tot1(k);
alert(k);</p><p>                                  }
   }
   
    function sum_tot1(ik){ // 전체 합계
   
           
            for( ikq=0; ikq<=<?=$i?>; ikq++) {
 
           window["pay"+ikq+"_"+ik] = document.getElementById('pay'+ikq+'_'+ik).value; 
  
              if(window["pay"+ikq+"_"+ik] =='') { window["pay"+ikq+"_"+ik] = '0'; } else { window["pay"+ikq+"_"+ik]= window["pay"+ikq+"_"+ik].replace(/[^0-9]/g,'');}
         
               window["pay_"+ik] = eval(window["pay_"+ik]) + eval(window["pay"+ikq+"_"+ik]);
      
      document.getElementById('pay_'+ik).value = window["pay_"+ik].toLocaleString().split(".")[0];
      
                                   }
   }
</p><p>
</p><p></script></p><p>


sum_tot 함수에서 sum_tot1 호출할 경우 for문이 한 번 밖에 돌지가 않네요..

호출을 빼버리면 제대로 돌고요


제가 멀 잘못 알고 있는게 있는건가요?? ㅠ.ㅠ

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

답변 3개

채택된 답변
+20 포인트
8년 전

자바스크립트 변수로 window, document 같은 개체들을 사용하는 것은 아주 좋지않습니다

-------------------------------

for문이 한 번 밖에 돌지가 않네요 <--이것은 sum_tot1 호출시 이 함수에서 에러가 발생한 까닭입니다

IE에서 F12를 이용해서 에러를 살펴보세요

추측으로는

<input id='pay0_4'~~>이와 같은 id 값과 for문에서 읽어오려는 id값이 일치하지않아서

읽을 수 없기 때문에 에러가 발생하는 것으로 보입니다

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

비누거품
8년 전
for($i=0; $i < 31; $i++){
...
<input id='pay<?=$i?>_4' ~~~~ >
...
}
f12 에러를 보니 document.getElementById('pay'+ikq+'_'+ik+'').value;

값을 가지고 오지를 못하네요..

합계를 한거다 for 문으로 돌리려고 한거 그냥 풀어서 해야겠어요...
균이
8년 전
document.getElementById('pay'+ikq+'_'+ik+'').value <--이것은 id찾기를 할때

pay0_4 , pay1_4 ~~pay30_4
pay0_5 ~~ pay30_5
........
........
pay0_19 ~~~pay30_19

이렇게 31 x 16 = 496 개를 찾게 되는데 input 태그가 그렇게 많지는 않을 것 같네요

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

8년 전

$i 값은 어떻게? 넘어가나요~?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

비누거품
8년 전
alert 찍어보니 잘 넘어갑니다.

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

y
8년 전

sum_tot1 에서 오류가 발생하지는 않는지 확인해보세요. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

비누거품
8년 전
sum_tot1 은 오류 없이 잘 돌아갑니다~

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

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

로그인