2010-03-30 2 views
0

각 상태 옆에 확인란이있는 상태 목록이 테이블과 연결된 일부 데이터와 연결되어 있습니다. 모든 체크 된 상태의 입력 값의 합계를 성공적으로 계산할 수 있지만 각 상태에 대한 추가 데이터를 3D 배열에 저장하여 나중에 폼의 요약에 표시하여 선택한 상태 만 사용자에게 보여줄 수 있도록해야합니다. . 몇 가지 해결책을 찾았지만 설치를 위해 아무 것도 얻을 수 없었습니다. 내 스크립트가 중지 될 세 줄을 주석 때확인란의 각 기능을 사용하여 셀에서 텍스트 가져 오기

var returnDb = new Array(); 
var inc = 0; 
var returnState = ''; 
var returnNum = ''; 
var returnEmail = ''; 
$("input:checked").each(function() { 
    var value = 1*$(this).attr("title"); 
    var value_vendors = 1*$(this).attr("title"); 

    // These are causing my script to stop 
    returnState = ''. $(this).closest('tr').find('td:eq(1)').text(); 
    returnNum = ''. $(this).closest('tr').find('td:eq(2)').text(); 
    returnEmail = ''. $(this).closest('tr').find('td:eq(3)').text(); 

    returnDb[inc] = [['' . returnState, '' . returnNum, '' . returnEmail]]; 

    total += parseInt(value); 
    vendors += parseInt(value_vendors); 

    inc++; 
}); 

이 모든 것이 잘 작동 : 이것은 내가 지금까지 (내가 밖으로 중요한 코드를 떠나지 않을거야 희망) 한 것입니다. 어떤 잘못된 생각을하고 있거나 더 나은 접근법이 있다면 어떨까요?

+0

나는 추한 일을하고있는 것 같습니다. 배열에 변수를 할당 할 때 이미 문자열이어야하는 문자열을 연결하는 것과 같이, 내가 더 좋아지기 때문에 추악한 것을 지적 할 수는 있지만 우선이 방법을 이해하는 방법을 찾고 싶습니다. – bccarlso

+0

.attr()은 문자열을 반환하므로 수학 연산을 수행하기 전에 문자열을 int로 형 변환해야합니다. –

답변

2

자바 스크립트에서는 +을 사용하여 문자열을 연결하지만 여기에도 필요하지 않습니다. 또한 parseInt를 사용하여 값을 추출합니다. 전체 및 공급 업체도 초기화해야합니다. 마지막으로, 각각은 지수를 인수로 제공하므로 카운터가 필요하지 않습니다.

편집 : 참고 returnDb 배열에 대한 할당을 변경했습니다. 원래는 returnDb의 각 배열 요소에 값 배열을 포함하는 배열을 할당합니다. 새 코드에서는 returnDb의 각 요소에 세 가지 속성 (state, num, email)을 가진 객체를 할당합니다. 원본이 맞을 수도 있습니다 - 어떻게 사용하고 있는지 모르겠지만 객체 접근 방식이 대부분의 경우에 더 유용하다고 생각합니다.

var returnDb = new Array();   
var returnState = '';  
var returnNum = '';  
var returnEmail = ''; 
var total = 0; 
var vendors = 0;  
$("input:checked").each(function(i) {  
    var value = parseInt($(this).attr("title"));  
    var value_vendors = parseInt($(this).attr("title"));  

    // These are causing my script to stop  
    returnState = $(this).closest('tr').find('td:eq(1)').text();  
    returnNum = $(this).closest('tr').find('td:eq(2)').text();  
    returnEmail = $(this).closest('tr').find('td:eq(3)').text();  

    //returnDb[i] = [[returnState, returnNum, returnEmail]]; 
    returnDb[i] = { state: returnState, num: returnNum, email: returnEmail }; 

    total += value;  
    vendors += value_vendors;   
}); 
+0

* 이마를 내민다 * – chakrit

+0

와우 나는 어리 석다, 고마워, 적어도 그 시점에서 멈추지 않도록 만들고있다. 현재 PHP에서 텍스트를 에코 (echo)하는 것과 같은 코드를 신속하게 "디버깅"하기 위해 무엇을 사용하고 있습니까? 대답 tho 주셔서 감사합니다! – bccarlso

+0

시도해보십시오. console.log ("Hello");'... Safari/Chrome/IE8 개발 콘솔 및 Firebug 확장자를 가진 Firefox – chakrit

관련 문제