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没有显示任何结果。只有当活动级别为“无效”时,代码的第二部分才会正常工作。有人发现什么错误了吗?
发布于 2018-11-24 23:47:24
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 );
一种更简洁的方法。
发布于 2018-11-25 00:22:31
我很抱歉地说,你的代码充满了错误。
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>");传递给提示窗口的值是数字,不需要将它们放在引号中。
if ( activitylevel == 0){这不是范围检查:
if (activitylevel == "1-3"){您应该执行以下操作:
if (activitylevel >= 1 && activitylevel < 3){如上所述,用户不知道在提示窗口中输入什么。最好有一个用户可以从中选择的列表。
在这里,我举了一个简单的例子,告诉你如何才能使它成为一个更好的解决方案。
$("#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");
}
});<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>
https://stackoverflow.com/questions/53459556
复制相似问题