2017-12-05 3 views
-1

프로젝트로 저는 "베어 본"예산 웹 응용 프로그램을 구축 중입니다. 나는 소득원과 금액을 기입하기 위해 많은 의견이있는 양식을 가지고있다. 값이 0 인 배열에 빈 입력을 추가합니다.

<form> 
     <div class="form-group"> 
     <input type="number" class="form-control" id="amount1" placeholder="Enter Amount" name="incAmount"> 
     <input type="number" class="form-control" id="amount2" placeholder="Enter Amount" name="incAmount"> 
     <input type="number" class="form-control" id="amount3" placeholder="Enter Amount" name="incAmount"> 
     <input type="number" class="form-control" id="amount4" placeholder="Enter Amount" name="incAmount"> 
     </div> 
    </form> 

<form> 
     <div class="form-group"> 
     <input type="text" class="form-control" id="incomeSrc1" placeholder="Enter Source" name="incomeSrc"> 
     <input type="text" class="form-control" id="incomeSrc2" placeholder="Enter Source" name="incomeSrc"> 
     <input type="text" class="form-control" id="incomeSrc3" placeholder="Enter Source" name="incomeSrc"> 
     <input type="text" class="form-control" id="incomeSrc4" placeholder="Enter Source" name="incomeSrc"> 
     </div> 
    </form> 

그리고

는 내가 함께 추가 소득의 가장 큰 원인을 확인 수 amountArr 그래서 배열로 모든 입력을 넣어했습니다.

내 최신 시도했다 :

var incAmount = document.getElementsByName("incAmount"); 
var amountArr = []; 
//Income input function 
for (var index = 0; index < incAmount.length; index++) { 
    incAmount[index].addEventListener("input", add3); 
    function add3() { 
     for (var i = 0; i < incAmount.length; i++) { 
      amountArr[i] = parseFloat(incAmount[i].value); 
      if (incAmount[i].value === NaN) { 
       amountArr[i] = 0; 
      }; 
     }; 
    }; 
}; 

목표는 입력이 작성되지 않은 경우 다음 배열의 값은 0 그러나 내 모든 시도 중 하나와 같은 오류를 던졌다 될 것입니다 -

incAmount[i].value is undefined

또는 배열을 NaN으로 채웠다. 비교했을 때

는 또한

if (amountArr[i].value !== NaN) 

그 중

if (isNaN(amountArr[i])) 

없음이 참 반환 (실행 계속되는 코드)

왜 amountArr하지 않거나 사실 빈 incAmount의 reurn 시도 NaN/null/undefined에?

+0

'incAmount'는 어디에 정의되어 있습니까? – epascarello

+0

확인하지 않으려면 0으로 채울 수 있습니다. 그런 다음 NaN이 아니면 값을 삽입하십시오. –

+0

var incAmount = document.getElementsByName ("incAmount"); – Chuck

답변

0

나는 해결책을 찾았습니다.

for (var i = 0; i < incAmount.length; i++) { 
     amountArr[i] = parseFloat(incAmount[i].value) || 0; 

배열 amountArr은 모든 빈 입력에 대해 0을 표시합니다.

0

비교하기 전에 빈 값을 NaN으로 변환하려면 조건에 parseFloat을 사용해야합니다.

또는 amountArr[i]을 조건으로 사용하여 NaN인지 확인해야합니다.

또한 함수를 사용하여 NaN 값을 확인해야합니다.

if (isNaN(amountArr[i])) { 
    amountArr[i] = 0; 
+0

이제 0을 표시합니다 – Chuck

+0

이전 시도에서 parseFloat를 사용하여 시도했지만 Uncaught TypeError가 throw됩니다. 정의되지 않은 속성 'value'을 읽을 수 없습니다 HTMLInputElement.add3에서 – Chuck

+0

'incAmount' 배열을 채 웁니다 장소를 확인하십시오. 값을 입력했는지 확인하십시오. –

관련 문제