2014-10-12 2 views
0

이것은 나를 미치게합니다. 배열을 인쇄하려고하는데 작동하지 않습니다. 내가 뭘 놓치고 있니? 결과 변수는 "fordefined"를 반환하는데 이는 내 for 루프가 올바르게 작동하지 않는다는 것을 의미합니다. 다른 모든 것은 제대로 작동하는데, console.log 필드가 배열에 추가되었다는 것을 올바르게 표시했습니다. 자바 스크립트 : 배열을 통해 반복

// The list of accounts array. 
 
var accountsArray = []; 
 

 
function addAccount() { 
 
    // Take fields and put user data into varables. 
 
    var accountName = document.getElementById('accountName').value; 
 
    var accountBalance = document.getElementById('accountBalance').value; 
 
    var accountType = document.getElementById("accountType"); 
 
    var accountTypeSelected = accountType.options[accountType.selectedIndex].text; 
 
    var accountCurrency = document.getElementById("accountCurrency"); 
 
    var accountCurrencySelected = accountCurrency.options[accountCurrency.selectedIndex].text; 
 

 
    // Put these variables into the array. 
 
    accountsArray.push(accountName); 
 
    accountsArray.push(accountBalance); 
 
    accountsArray.push(accountTypeSelected); 
 
    accountsArray.push(accountCurrencySelected); 
 

 
    // Items added to the array, logged. 
 
    console.log('user added: ' + accountsArray); 
 
} 
 

 
function accountsListHtml() { 
 

 
    var results; 
 

 
    // Loop through the array 
 
    for (var i = 0; i < accountsArray.length; i++) { 
 
    results = accountsArray[i]; 
 
    } 
 

 
    document.getElementById('accountsList').innerHTML = results; 
 
}

여기에있는 모든 파일에 대한 링크입니다. Framework7을 사용하는 iOS 웹 앱입니다. Balance Pro

+2

각각 할당'결과 = accountsArray은 [I]는,'이라는 불필요한 어레이를 채우고 이전 – hindmost

+0

'addAccount()을 ', 덮어 , 적어도 게시 한 코드에서. – Utkanos

+0

@Utkanos HTML 'onclick'에서 호출됩니다. – jryankennedy

답변

0

results = accountsArray[i];results += accountsArray[i];으로 변경해보십시오.

업데이트 그리고 예를 들어, 빈 문자열로 results를 초기화 : 루프 즉 results = accountsArray[i];의에서

+0

나는 그것을 시도하고 난 여전히 '정의되지' – jryankennedy

+0

내 업데이 트를 참조하십시오 :) –

+0

아직도 정의되지지고. – jryankennedy

0

for (var i = 0; i < accountsArray.length; i++) { results = accountsArray[i]; }

문 변수 results 에브리 루프 실행을 덮어 씁니다. 당신은 문을 변경할 수 있습니다 :

results += accountsArray[i].toString();

과 빈 문자열로 results를 초기화. 나를 위해

+0

흠, 그냥 시도하고 지금은 그냥 빈 문자열 (결과 = '') – jryankennedy

0

다음 작품 : http://jsfiddle.net/95ztrmk3/13/

HTML :

<div id="accountsList"></div> 

JS : 입력 가정

// The list of accounts array. 
var accountsArray = []; 

addAccount(); 
accountsListHtml(); 

function addAccount() { 
    // Take fields and put user data into varables. 
    var accountName = "John Doe"; 
    var accountBalance = "500.00"; 
    var accountTypeSelected = "Checking" 
    var accountCurrencySelected = "USD"; 

    // Put these variables into the array. 
    accountsArray.push(accountName); 
    accountsArray.push(accountBalance); 
    accountsArray.push(accountTypeSelected); 
    accountsArray.push(accountCurrencySelected); 

    // Items added to the array, logged. 
    console.log('user added: ' + accountsArray); 
} 

function accountsListHtml() { 

    var results = []; 

    // Loop through the array 
    for (var i = 0; i < accountsArray.length; i++) { 
     results += accountsArray[i] + " "; 
    } 

    document.getElementById('accountsList').innerHTML = results; 
    console.log(results); 

} 

의 형식이 잘못되거나 이상한 없습니다. Javascript가 results이 빈 배열이고 문자열이 아님을 인식하게 만들었습니다. var results = []

+0

내 끝에 이것을 시도하고, 나는 여전히 작동하지 않는 이유를 잘 모르겠습니다. 방금 코드에 대한 편집 내용을 업로드했습니다. [Balance Pro] (http://www.jordankennedy.com/balancepro/index.html) – jryankennedy

+0

@jryankennedy 문제는 아마도 함수가 호출되는 순서와 관련이 있다고 생각합니다. , 그 경우에. 이로드되고 양식 필드가 비어있는 경우 (결과가 0 인 경우) 'accountsListHtml'이 한 번 호출 된 것 같습니다. 어느 쪽이든,이 시점에서 배열을 반복 할 때 문제가되지 않는 것처럼 보입니다. – alex

2

body.onloadaccountsListHtml()을 호출했습니다. 그 시점에서 accountsArray은 비어 있습니다. 링크 된 페이지에서 accountsListHtml()으로 전화 할 수있는 다른 방법을 찾을 수 없습니다.

기능 addAccount() 내부에 하나 개의 라인을 추가하고 작동 것이다

function addAccount() { 

    /* vour code */ 

    console.log('user added: ' + accountsArray); 

    accountsListHtml(); // add this line 
}