2017-04-03 37 views
1

不確定錯誤是否存在於viewData()函數中。添加第二個輸入時,它在警告框中顯示爲未定義

var list = { 
    firstName: [], 
    lastName: [], 
    maximumHeartRate: [], 
    restingHeartRate: [], 
    age: [], 
    gender: [] 
} 

alert("Welcome to the VO2 Max Categorisation App."); 

function validate(string) { 
    var stringToVal = prompt(string); 
    var range = new RegExp("^[a-zA-Z]{2,}$"); 
    while (range.test(stringToVal) == false || stringToVal == "" || stringToVal == null) { 
    stringToVal = prompt(string); 
    } 
    return stringToVal 
} 

function validateNumber(numToVal, min, max){ 
    var askUser = Number(prompt(numToVal)) 
    while (isNaN(askUser) || askUser < min || askUser > max || askUser == '' || askUser == null) { 
     askUser = Number(prompt("Please enter a number between " + min + " & " + max + ".")); 
    } 
    return askUser 
} 

function addData(list) { 
    var userFirstName = validate("First name of user?"); 
    var userLastName = validate("Last name of user?"); 
    var userGender = validate("Gender of user?"); 
    var userAge = validateNumber("Please enter an age between 20 - 39!",20,39); 
    var MHR = validateNumber("Enter maximum heart rate of user",30,200); 
    var RHR = validateNumber("Enter resting heart rate of user",30,200); 

    list.firstName.push(userFirstName); 
    list.lastName.push(userLastName); 
    list.gender.push(userGender); 
    list.age.push(userAge); 
    list.maximumHeartRate.push(MHR); 
    list.restingHeartRate.push(RHR); 

} 

,該功能要求的用戶,並推到一切名單

function calculateVO2Max(list) { 
    var VO2Max = 15.3 * (list.maximumHeartRate/list.restingHeartRate); 
    return VO2Max; 
} 

此計算最大攝氧量

function VO2MaxCategorisation(Gender,Age,VO2Max) { 
    if (Gender == "Female" && Age >= 20 && Age <= 29 && VO2Max < 31) { 
    return("Low"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 31 && VO2Max <=34)) { 
    return("Fair"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 35 && VO2Max <= 37)) { 
    return("Average"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 38 && VO2Max <= 41)) { 
    return("Good"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && VO2Max > 41) { 
    return("High"); 
    } 


    if (Gender == "Female" && Age >= 30 && Age <= 39 && VO2Max < 29) { 
    return("Low"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 29 && VO2Max <= 32)) { 
    return("Fair"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 33 && VO2Max <= 35)) { 
    return("Average"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 36 && VO2Max <= 39)) { 
    return("Good"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && VO2Max > 39) { 
    return("High"); 
    } 


    if (Gender == "Male" && Age >= 20 && Age <= 29 && VO2Max < 37) { 
    return("Low"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 37 && VO2Max <= 41)) { 
    return("Fair"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 42 && VO2Max <= 44)) { 
    return("Average"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 45 && VO2Max <= 48)) { 
    return("Good"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && VO2Max > 48) { 
    return("High"); 
    } 


    if (Gender == "Male" && Age >= 30 && Age <= 39 && VO2Max < 35) { 
    return("Low"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 35 && VO2Max <= 39)) { 
    return("Fair"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 40 && VO2Max <= 42)) { 
    return("Average"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 43 && VO2Max <= 47)) { 
    return("Good"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && VO2Max > 47) { 
    return("High"); 
    } 

} 

此功能分類

function viewData(list) { 
    var string = "" 
    for(var i = 0; i < list.firstName.length; i++) { 
    string += (list.firstName[i] + " " + list.lastName[i] + ": " + VO2MaxCategorisation(list.gender[i],list.age[i],calculateVO2Max(list)) + "\n") 
    } 
    alert(string) 
} 

它顯示了不確定的時候2 inpu TS顯示在警告框,但它表明,當僅顯示1放

function optionMenu(list) { 
    while(true) { 
    var optionChoice = Number(prompt("What do you want to do: \n 1)Enter data \n 2)View data \n 3)Exit")); 
    if (optionChoice == 1) { 
     addData(list); 
    } else if (optionChoice == 2) { 
     viewData(list); 
    } else if (optionChoice == 3) { 
     break; 
    } else { 
     alert("Sorry,choose from the options."); 
    } 
    } 
} 

這是選擇

optionMenu(list); 

回答

0

您在初始化字符串「」菜單中的用戶的類別每次調用viewData。

將視圖數據上下文之外的字符串放在全局位置。

https://jsbin.com/sukuyeguzu/edit?html,js,output

var list = { 
    firstName: [], 
    lastName: [], 
    maximumHeartRate: [], 
    restingHeartRate: [], 
    age: [], 
    gender: [] 
} 
var string = ""; 



alert("Welcome to the VO2 Max Categorisation App."); 

function validate(string) { 
    var stringToVal = prompt(string); 
    var range = new RegExp("^[a-zA-Z]{2,}$"); 
    while (range.test(stringToVal) == false || stringToVal == "" || stringToVal == null) { 
    stringToVal = prompt(string); 
    } 
    return stringToVal 
} 

function validateNumber(numToVal, min, max){ 
    var askUser = Number(prompt(numToVal)) 
    while (isNaN(askUser) || askUser < min || askUser > max || askUser == '' || askUser == null) { 
     askUser = Number(prompt("Please enter a number between " + min + " & " + max + ".")); 
    } 
    return askUser 
} 

function addData(list) { 
    var userFirstName = validate("First name of user?"); 
    var userLastName = validate("Last name of user?"); 
    var userGender = validate("Gender of user?"); 
    var userAge = validateNumber("Please enter an age between 20 - 39!",20,39); 
    var MHR = validateNumber("Enter maximum heart rate of user",30,200); 
    var RHR = validateNumber("Enter resting heart rate of user",30,200); 

    list.firstName.push(userFirstName); 
    list.lastName.push(userLastName); 
    list.gender.push(userGender); 
    list.age.push(userAge); 
    list.maximumHeartRate.push(MHR); 
    list.restingHeartRate.push(RHR); 

} 

function calculateVO2Max(list) { 
    var VO2Max = 15.3 * (list.maximumHeartRate/list.restingHeartRate); 
    return VO2Max; 
} 

function VO2MaxCategorisation(Gender,Age,VO2Max) { 
    if (Gender == "Female" && Age >= 20 && Age <= 29 && VO2Max < 31) { 
    return("Low"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 31 && VO2Max <=34)) { 
    return("Fair"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 35 && VO2Max <= 37)) { 
    return("Average"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && (VO2Max >= 38 && VO2Max <= 41)) { 
    return("Good"); 
    } else if (Gender == "Female" && Age >= 20 && Age <= 29 && VO2Max > 41) { 
    return("High"); 
    } 


    if (Gender == "Female" && Age >= 30 && Age <= 39 && VO2Max < 29) { 
    return("Low"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 29 && VO2Max <= 32)) { 
    return("Fair"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 33 && VO2Max <= 35)) { 
    return("Average"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && (VO2Max >= 36 && VO2Max <= 39)) { 
    return("Good"); 
    } else if (Gender == "Female" && Age >= 30 && Age <= 39 && VO2Max > 39) { 
    return("High"); 
    } 


    if (Gender == "Male" && Age >= 20 && Age <= 29 && VO2Max < 37) { 
    return("Low"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 37 && VO2Max <= 41)) { 
    return("Fair"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 42 && VO2Max <= 44)) { 
    return("Average"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && (VO2Max >= 45 && VO2Max <= 48)) { 
    return("Good"); 
    } else if (Gender == "Male" && Age >= 20 && Age <= 29 && VO2Max > 48) { 
    return("High"); 
    } 


    if (Gender == "Male" && Age >= 30 && Age <= 39 && VO2Max < 35) { 
    return("Low"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 35 && VO2Max <= 39)) { 
    return("Fair"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 40 && VO2Max <= 42)) { 
    return("Average"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && (VO2Max >= 43 && VO2Max <= 47)) { 
    return("Good"); 
    } else if (Gender == "Male" && Age >= 30 && Age <= 39 && VO2Max > 47) { 
    return("High"); 
    } 

} 

function viewData(list) { 
    for(var i = 0; i < list.firstName.length; i++) { 
    string += (list.firstName[i] + " " + list.lastName[i] + ": " + VO2MaxCategorisation(list.gender[i],list.age[i],calculateVO2Max(list)) + "\n") 
    } 
    alert(string) 
} 

function optionMenu(list) { 
    while(true) { 
    var optionChoice = Number(prompt("What do you want to do: \n 1)Enter data \n 2)View data \n 3)Exit")); 
    if (optionChoice == 1) { 
     addData(list); 
     viewData(list); 
    } else if (optionChoice == 2) { 
     viewData(list); 
    } else if (optionChoice == 3) { 
     break; 
    } else { 
     alert("Sorry,choose from the options."); 
    } 
    } 
} 

optionMenu(list);