首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果为else,则活动级别为statement..calculation

如果为else,则活动级别为statement..calculation
EN

Stack Overflow用户
提问于 2018-11-24 23:16:21
回答 2查看 39关注 0票数 2
代码语言:javascript
复制
var bmr=100;
var sum=50;
var caloriesneeded = 0;

var activitylevel = prompt("Enter your activity level ");
document.write( "<p>You need to consume ");

if ( activitylevel == "0"){
   document.write (caloriesneeded = bmr * 1.2 );

}
else if (activitylevel == "1-3"){
   document.write(caloriesneeded = bmr *  1.375 );

}
else if (activitylevel == "3-5"){
    document.write(caloriesneeded = bmr *  1.55 );

}
else if (activitylevel == "6-7"){
    document.write (caloriesneeded = bmr * 1.725 );

}
else if (activitylevel == "2x"){
    document.write(caloriesneeded = bmr * 1.9 );

}

else {
    document.write("invalid");
}



if (caloriesneeded > sum){
    document.write ("<p>You still can consume " + (caloriesneeded - sum) + 
"kcal of food</p>");

}

else if (caloriesneeded == sum){
    document.write("<p>You have consumed just enough " + (caloriesneeded - 
sum) + "kcal of food</p>");

}

else if (caloriesneeded < sum){
    document.write ("<p>You have over consumed  " + (sum - caloriesneeded ) 
+ "kcal of food</p>");

}

只有代码的前半部分是有效的,计算所需卡路里> sum,所需卡路里== sum和所需卡路里< sum没有显示任何结果。只有当活动级别为“无效”时,代码的第二部分才会正常工作。有人发现什么错误了吗?

EN

回答 2

Stack Overflow用户

发布于 2018-11-24 23:47:24

代码语言:javascript
复制
var bmr=100;
var sum=50;
var caloriesneeded = 0;
var activityLevels = {
    "0": 1.2,
    "1-3": 1.375,
    "3-5": 1.55,
    "6-7": 1.725,
    "2x": 1.9
};
var output = "";

function calculateCaloriesNeeded(activityLevel) {
    if ( typeof activityLevels[activityLevel] !== "undefined") {
        caloriesneeded = bmr * activityLevels[activityLevel];
        return true;
    }
    return false;
}

var currentActivityLevel = prompt("Enter your activity level ");

if (calculateCaloriesNeeded( currentActivityLevel )) {
    // input has been valid
    output += "<p>You need to consume " + caloriesneeded + "</p>";
    if (caloriesneeded > sum){
        output += "<p>You still can consume " + (caloriesneeded - sum) + "kcal of food</p>";
    } else if (caloriesneeded == sum){
        output += "<p>You have consumed just enough " + (caloriesneeded - sum) + "kcal of food</p>";
    } else if (caloriesneeded < sum){
        output += "<p>You have over consumed  " + (sum - caloriesneeded ) + "kcal of food</p>";
    }
} else {
    output += "<p>Your input is not valid. Please choose one of “0”, “1-3”, “3-5”, “6-7” or “2x”.</p>";
}

document.write( output );

一种更简洁的方法。

票数 2
EN

Stack Overflow用户

发布于 2018-11-25 00:22:31

我很抱歉地说,你的代码充满了错误。

代码语言:javascript
复制
document.write( "<p>You need to consume ");     // missing closing tag </p>
document.write (caloriesneeded = bmr * 1.725 ); // assign and passing a parameter at the same time?

Calculate the value and then pass it to the document eg:

caloriesneeded = bmr * 1.2;
document.write ("<p>"+caloriesneeded+"</p>");

传递给提示窗口的值是数字,不需要将它们放在引号中。

代码语言:javascript
复制
if ( activitylevel == 0){

这不是范围检查:

代码语言:javascript
复制
if (activitylevel == "1-3"){

您应该执行以下操作:

代码语言:javascript
复制
if (activitylevel >= 1 && activitylevel < 3){

如上所述,用户不知道在提示窗口中输入什么。最好有一个用户可以从中选择的列表。

在这里,我举了一个简单的例子,告诉你如何才能使它成为一个更好的解决方案。

代码语言:javascript
复制
$("#activeSelection").change(function() {
  var bmr = 100;
  var sum = 50;
  var caloriesneeded = 0;

  var $selection = $("#activeSelection").val();

  if ($selection == 0) {
    caloriesneeded = bmr * 1.2;
    $('#calorieResponse').text(caloriesneeded);
  } else if ($selection >= 1 && $selection < 3) {
    caloriesneeded = bmr * 1.375
    $('#calorieResponse').text(caloriesneeded);
  } else if ($selection >= 3 && $selection <= 5) {
    caloriesneeded = bmr * 1.55
    $('#calorieResponse').text(caloriesneeded);
  } else if ($selection >= 6 && $selection < 7) {
    caloriesneeded = bmr * 1.725;
    $('#calorieResponse').text(caloriesneeded);
  } else if ($selection >=8 && $selection <=10) {
    caloriesneeded = bmr * 1.9
    $('#calorieResponse').text(caloriesneeded);
  }
  
  if (caloriesneeded > sum){
    $('#consume').text("You still can consume " + (caloriesneeded - sum) + "kcal of food");

}

else if (caloriesneeded == sum){
     $('#consume').text("You have consumed just enough " + (caloriesneeded - 
sum) + "kcal of food");

}

else if (caloriesneeded < sum){
    $('#consume').text("You have over consumed  " + (sum - caloriesneeded )+ "kcal of food");

}

});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>Hei, what is your activity level? </span>
<select id="activeSelection">
  <option>Please select</option>
  <option value="0">Couch potato</option>
  <option value="1">Not doing much</option>
  <option value="2">Lazy</option>
  <option value="3">Little active</option>
  <option value="4">Somehow active</option>
  <option value="5">Active</option>
  <option value="6">Active 2 times a week</option>
  <option value="7">Active 3 times a week</option>
  <option value="8">Active 4 times a week</option>
   <option value="9">Active 5 times a week</option>
  <option value="10">Always on the go</option>
</select>

<div>You need to consume: </div><span id="calorieResponse"></span>
<div id="consume"></div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53459556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档