2015-01-14 9 views
0

각 루프를 사용하여 입력 필드를 반복하고 배열에 다른 양식 데이터를 추가 한 다음 해당 입력 값을 이미 배열에있는 양식 데이터에 추가하려고합니다.각 루프의 배열 값 할당

기본적으로 작동하는 것 같지만 입력을 설정할 때마다 배열의 해당 이름을 가진 모든 항목에 해당 값이 설정됩니다. 내 논리가 어디로 향하고 있는지에 대한 아이디어가 있습니까?

$(this).next('tr').children('td').each(function() { 
     input = $(this).children('input'); 
     units[i] = unit; 
     units[i]['barcode'] = input.val(); 
     i++; 
}); 

출력 오브젝트 : 개체 {0 개체 1 개체} 0 개체 바코드 "789" 수량 : "3" 크기 : 15 개 상태 :

을 "수신"

1 개체 바코드 "789" 수량 : "3" 크기 : 15 개 상태 :

input.val()는 t의 각각의 반복에서 상이한 "수신" 그는 각 루프마다 모든 바코드 항목에 마지막 값을 할당합니다. 당신은 각 배열이 동일한 인스턴스를 참조하지 않도록 장치 개체를 복제하는 빈 객체 extend()을 사용할 수 있습니다

+2

'단위'및 'i'란 무엇입니까? – Shomz

+0

'unit'은 루프 앞에 정의 된 객체라고 가정하면 모든 객체가 동일한 객체를 참조하도록 할당합니다. 각 반복마다 새 객체를 만들려면 몇 가지 코드를 추가해야합니다. – nnnnnn

+0

i는 루프 앞에 0으로 설정된 카운터 일 뿐이며 unit은 루프 앞에 정의 된 객체입니다. 동일한 객체를 반복해서 할당하고 바코드가 재 할당되는 이유는이 문제를 해결할 수있는 좋은 방법입니까? 단위는 바코드가 태그 된 기본 데이터입니다. – cholisky

답변

0

:

$(this).next('tr').children('td').each(function() { 
     input = $(this).children('input'); 
     units[i] = $.extend({}, unit); 
     units[i]['barcode'] = input.val(); 
     i++; 
}); 

이 각각 지금은 잘 작동합니다은 바코드를 포함하여, 고유의 객체 .

+0

그게 티켓이야! 감사합니다. – cholisky

+0

당신을 진심으로 환영합니다! :) – Shomz