2013-01-19 5 views
-1

약간의 상황이 있습니다. 기본적으로 JavaScript 배열에 항목을 추가하고 있습니다.이 항목은 선택 상자 변경시 채워집니다. 하지만 문제는 내가 0을 입력 할 때 배열에서 제거해야한다는 것입니다.변경시 자바 스크립트 배열에서 항목 제거

여기에 나는 그것을 볼 수있는 jsfiddle click here를 생성 한 코드

var addon = new Array(); 
function updateAddons(){ 
    addon.length=0; 

    var plan = new Array; 
    var planQty = new Array; 

    plan.length=0; 
    planQty.length=0; 

    for(var j =0 ; j< 3; j++){ 
     $("select[name='addon_"+j+"[]'] option:selected").each(function(){ 
      var item = { 
       product_name : $(this).attr('pn'), 
       product_cost : $(this).attr('cost'), 
       product_id : $(this).val() 
      }; 
      if(item.product_id != 0){ 
       plan.push(item); 
      } 
     }); 
     $("input[name='addonQty_"+j+"[]'] ").each(function(){ 
      if($(this).val() != 0){ 
       planQty.push($(this).val()); 
      } 
     }); 
    } 

    for(var i =0; i < plan.length; i++){ 
     var item = { 
      product:plan[i], 
      product_qty:planQty[i] 
     } 
     if(item.product.product_id != 0){ 
      addon.push(item); 
     } 

    } 

} 

입니다. (브라우저 콘솔에서 전체 개체를 확인하십시오.)

누군가가 도움을 줄 수 있다면. 그리고 그 대답을 설명하십시오.

감사합니다.

답변

0

나는 직접 해결했습니다. 0 대신에 artibitary number를 넣고 최종 배열에 추가하지 않는다.

감사

0

당신 코드의 주요 문제는 다음과 같은 성명 : 입력이 값이 undefined 비어있는 경우

if($(this).val() != 0) 

문제입니다. 자바 스크립트 undefined0과 같지 않습니다. 이 문제를 쉽게 해결할 수있는 방법은 정의되지 않았는지 테스트하는 것입니다.

if($(this).val() != 0 && $(this).val() != undefined) 
+0

답장을 보내 주셔서 감사합니다. 하지만 지금은 또 다른 문제에 직면하고 있습니다. 문제는 제품 ID가 0이면 배열에 항목을 추가하는 동안 배열을 끊어서 항목 옆에 항목을 추가 할 수 없다는 것입니다. –

+0

@MurtazaHussain 업데이트 된 JSFiddle을 만들어서 작동하게하려면 어떻게해야할까요? (각 업데이트 후에 콘솔에 로그) http://jsfiddle.net/hfu5S/1/ –

+0

감사합니다. 그러나 이제 두 번째 드롭 다운에서 항목을 선택하고 해당 텍스트 상자에 3을 입력하십시오. 이제 내가 직면 한 문제를 알게 될 것이다. –

관련 문제