当前位置: 代码迷 >> JavaScript >> 函数返回值疏失
  详细解决方案

函数返回值疏失

热度:331   发布时间:2013-10-14 12:54:46.0
函数返回值出错
hT的值有问题 还有bmi bmr值是undefined need lose和gain都是NaN 求教如何获得正常的值???
var age ;
var gender ;
var hFt ;
var hIn ;
var hT;
var weight;
var bmi;
var bmr;
var act;
var need;
var lose;
var gain;

function result(){
var name = document.getElementById('name');
age = document.getElementById('age');
gender = getGender();
hFt = document.getElementById('hFt');
hIn = document.getElementById('hIn');
hT= ((hFt*12) + hIn)*0.254;
weight = document.getElementById('weight');
bmi = getBmi();
bmr = getBmr();
act = document.getElementById('act').value;
need = getNeed();
lose = getLose();
gain = getGain();


alert("Name:"+name.value+"\n"+
"Age:"+age.value+"\n"+
"Height:"+hFt.value+"'"+hIn.value+"\n"+
"Weight:"+weight.value+"lbs"+"\n"+
"BMI:"+bmi.value+"\n"+
"BMR:"+bmr.value+"\n"+
"Activity level:"+act+"\n"+
"Caloric Need:"+need+"\n"+
"Caloric Need to lose 1/2 pound(s):"+lose+"/"+need+"\n"+
"Caloric Need to gain 1/2 pound(s):"+gain+"/"+need+"\n" );
}

function getBmi(){
return parseFloat((0.45359237*weight)/(hT*hT));
}
function getGender(){
var obj;    
obj=document.getElementsByName('sex');
if(obj!=null){
var i;
for(i=0;i<obj.length;i++){
if(obj[i].checked){
return obj[i].value;   
break;
            }
        }
}else{
return null;
}
}

function getBmr(){
var tBmr;
if(gender.value == "male"){
 tBmr = 66 + (13.7 * weight * 0.45359237) + (5 * hT * 100) - (6.8*age);
}else{
 tBmr = 665 + (9.6 * weight * 0.45359237) + (1.8 * hT* 100) - (4.7 * age);
}
return tBmr;
}

function getNeed(){
var tNeed;
if(act == 'Extremely Inactive'){
tNeed = bmr.value;
} else if(act == 'Sedentary'){
tNeed = bmr.value * 1.2;
}else if(act == 'Lightly Active'){
tNeed = bmr.value * 1.375;
} else if(act == 'Moderately Active'){
tNeed = bmr.value * 1.55;
} else if(act == 'Vigorously Active'){
tNeed = bmr.value * 1.725;
} else if(act == 'Extremely Active'){
tNeed = bmr.value * 1.9;
}
return tNeed;
}
function getLose(){
 return (need - 3500);
}
function getGain(){
return (need + 3500);
}
javascript function

------解决方案--------------------
引用:
Quote: 引用:


//你写的函数result里面
//age, hFt, hIn, weight获取的只是id为'age','hFt','hIn','weight'的控件, 怎么能用于计算?
//要么一开始获取value, 要么计算的时候加上.value
function result(){
    var name = document.getElementById('name');
    age = document.getElementById('age');
    gender = getGender();
    hFt = document.getElementById('hFt');
    hIn = document.getElementById('hIn');
    hT= ((hFt*12) + hIn)*0.254; 
    weight = document.getElementById('weight');
    bmi = getBmi();
    bmr = getBmr();
    act = document.getElementById('act').value;
    need = getNeed();
    lose = getLose();
    gain = getGain();
}

可是我加了value以后 alert运行时显示的结果就变成undefined 


如果你获取的时候已经加value了
那么你alert的时候就已经不用加value了
    
    alert("Name:"+name+"\n"+
    "Age:"+age+"\n"+
    "Height:"+hFt+"'"+hIn+"\n"+
    "Weight:"+weight+"lbs"+"\n"+
    "BMI:"+bmi+"\n"+
    "BMR:"+bmr+"\n"+
    "Activity level:"+act+"\n"+
    "Caloric Need:"+need+"\n"+
  相关解决方案