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);
}javascriptfunction

解决方案 »

  1.   


    //你写的函数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();
    }
      

  2.   

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

  3.   

    可是我加了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"+
        "Caloric Need to lose 1/2 pound(s):"+lose+"/"+need+"\n"+
        "Caloric Need to gain 1/2 pound(s):"+gain+"/"+need+"\n" );
      

  4.   

     根据你的方法更改过以后的结果是这样可是我加了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"+
        "Caloric Need to lose 1/2 pound(s):"+lose+"/"+need+"\n"+
        "Caloric Need to gain 1/2 pound(s):"+gain+"/"+need+"\n" );
      

  5.   

    你试着在你的函数里面看输出结果你的函数的获取value的格式是不是也修改了?
      

  6.   

    的确是value的事 那么如何改正呢?
      

  7.   

    我修改过了现在是function result(){
    var name = document.getElementById('name');
    age = document.getElementById('age').value;
    gender = getGender();
    hFt = document.getElementById('hFt').value;
    hIn = document.getElementById('hIn').value;
    hT= ((hFt*12) + hIn)*0.254;
    weight = document.getElementById('weight').value;
    act = document.getElementById('act').value;
    bmi = getBmi();
    bmr = getBmr();
    need = getNeed();
    lose = getLose();
    gain = getGain();
    alert("Name:"+name.value+"\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"+
    "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))).toFixed(2);
    }
    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 if(gender.value == "female"){
     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);
    }标准结果是
    我的结果是
    就是不知道为什么???
      

  8.   


    //gender.value--> gender即可
    //因为初始的时候gender已经是value的值
    function getBmr(){
      var tBmr;
      if(gender.value == "male"){
        tBmr = 66+(13.7 * weight * 0.45359237) + (5 * hT* 100) - (6.8 * age);
      }else if(gender.value == "female"){
        tBmr = 665 + (9.6 * weight * 0.45359237) + (1.8 * hT* 100) - (4.7 * age);
      }
      return tBmr;
    }
    //bmr.value --> bmr
    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;
    }
      

  9.   

    除了bmi其他都正确了?
    看看hFt hIn 跟hT的值然后在看那个函数getBmi是否计算正确就行了啊
      

  10.   


    Need 还是undefined然后lose和gain是NaN
      

  11.   

    你直接调试吧, 如果value的值能取出来的话只是计算方式有问题而已
    不然就在函数里面alert看看每一步输出什么