Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';这不管用吗?我想是';这是一个转换问题_Javascript_Html - Fatal编程技术网

Javascript 为什么';这不管用吗?我想是';这是一个转换问题

Javascript 为什么';这不管用吗?我想是';这是一个转换问题,javascript,html,Javascript,Html,我是一个脚本新手,已经在Codecademy做了一段时间的JavaScript练习,在工作中,我遇到了一个挑战自己的机会,构建了一个非常简单的应用程序(HTML和JavaScript),允许人们计算每天可以消耗的卡路里数,同时达到减肥目标 我就快到了。我有一个工作版本(感谢一些帮助),要求人们在表格中以英寸为单位给出他们的身高。我想做的最后一个改变是增加他们以标准格式(英尺和英寸)输入身高的功能,并让应用程序将其转换为方程式。麻烦就从这里开始。我添加了第二个字段,并在需要创建转换的地方重命名了变

我是一个脚本新手,已经在Codecademy做了一段时间的JavaScript练习,在工作中,我遇到了一个挑战自己的机会,构建了一个非常简单的应用程序(HTML和JavaScript),允许人们计算每天可以消耗的卡路里数,同时达到减肥目标

我就快到了。我有一个工作版本(感谢一些帮助),要求人们在表格中以英寸为单位给出他们的身高。我想做的最后一个改变是增加他们以标准格式(英尺和英寸)输入身高的功能,并让应用程序将其转换为方程式。麻烦就从这里开始。我添加了第二个字段,并在需要创建转换的地方重命名了变量,但发生的事情很奇怪

当某些内容输入到“英尺”字段时,它会正确计算,但如果您也在表单的“英寸”字段中添加了一些内容,则它会返回比实际值高4倍以上的结果

我试着将转换向下移动到性别功能中,但没有什么不同。我没有改变以前工作的代码的任何其他方面,因此我认为问题必须在inches变量或inches表单元素中,或者在它们组合的高度变量中。对我来说,后者似乎最有可能,但我似乎找不到问题所在

对于那些知道自己在做什么的人来说,这可能是显而易见的。如果你能花几秒钟的时间,你将帮助某人开发出他们生活中第一款真正使用的应用程序

旁注:当我第一次在浏览器(Chrome)中打开它时,答案会闪烁并消失。之后,每次它都会在屏幕上正确地调出答案。我不确定这是不是我犯了什么错误或者是浏览器问题还是什么

<html>
<head>
<title>Daily Calorie Max</title>

</head>
<body>

<script type="text/javascript" language="javascript">

function Calculate() {

    var gender = document.getElementById("gender").value;
    var weight = document.getElementById("weight").value;
    var inches = document.getElementById("inches").value;
    var height = (document.getElementById("feet").value * 12) + inches;
    var age = document.getElementById("age").value;
    var goal = document.getElementById("goal").value;


    if(gender=="male") 
        {
            val1 = 6.23 * weight;
            val2 = 12.7 * height;
            val3 = 6.8 * age;
            dailyDeficit = (goal * 3500) / 90;

            result = 66 + val1 + val2 - val3;

            cals = result * 1.55;
            calMax = cals - dailyDeficit;

        }
    else if (gender=="female")
        {
            val1 = 6.23 * weight;
            val2 = 4.7 * height;
            val3 = 4.7 * age;
            dailyDeficit = (goal * 3500) / 90;

            result = 655 + val1 + val2 - val3;

            cals = result * 1.55;
            calMax = cals - dailyDeficit;
        }


document.getElementById("answer").textContent = 'Your Daily Calorie Max is: ' + calMax.toFixed(0); 

}




</script>

<form action="#">
    Gender  : <select id="gender"><option value="male">Male</option><option value="female">Female</option></select><br />
    Weight  : <input type="text" id="weight" />lbs.<br />
    Height  : <input type="text" id="feet" />ft. <input type="text" id="inches" />in.<br />
    Age     : <input type="text" id="age" /><br />
    Goal    : <select id="goal"><option value=5>Lose 5 Pounds</option><option value=10>Lose 10 Pounds</option><option value=15>Lose 15 Pounds</option><option value=20>Lose 20 Pounds</option><option value=25>Lose 25 Pounds</option></select><br />


    </fieldset>
    <input type="submit" value="Give me my Daily Calorie Max!" onclick="Calculate()" />
</form>
<div id="answer"></div>

</body>
</html>

每日最大热量
函数计算(){
var-gender=document.getElementById(“性别”).value;
var-weight=document.getElementById(“weight”).value;
var inches=document.getElementById(“inches”).value;
变量高度=(document.getElementById(“英尺”).value*12)+英寸;
var age=document.getElementById(“age”).value;
var-goal=document.getElementById(“目标”).value;
如果(性别=“男性”)
{
val1=6.23*重量;
val2=12.7*高度;
val3=6.8*年龄;
每日赤字=(目标*3500)/90;
结果=66+val1+val2-val3;
cals=结果*1.55;
calMax=cals-每日赤字;
}
否则,如果(性别=“女性”)
{
val1=6.23*重量;
val2=4.7*高度;
val3=4.7*年龄;
每日赤字=(目标*3500)/90;
结果=655+val1+val2-val3;
cals=结果*1.55;
calMax=cals-每日赤字;
}
document.getElementById(“answer”).textContent='您的每日卡路里最大值为:'+calMax.toFixed(0);
}
性别:男性女性
重量:磅
高度:英尺英寸。
年龄:
目标:减掉5磅10磅15磅20磅25磅
问题在于:

var inches = document.getElementById("inches").value;
var height = (document.getElementById("feet").value * 12) + inches;
您将把
英尺的计算结果与
英寸的字符串连接起来(这里发生了几种类型强制-从
英尺
元素的值到用于乘法的整数,然后从结果整数到用于与
英寸
字符串串联的字符串)

您应该为以下各项使用正确的类型:

var inches = parseInt(document.getElementById("inches").value, 10);
var height = (parseInt(document.getElementById("feet").value, 10) * 12) + inches;
我还建议对浮点类型使用
parseFloat

这是JavaScript中的一个结果

+
运算符可用于将两个数字相加,但它也会连接字符串(即使这些字符串仅包含数字值)。如果尝试
+
字符串和数字,则会得到一个字符串

例如

var resultOfAdd = 34 + 12; // resultOfAdd equals 46
var resultOfAdd = "34" + "12"; // resultOfAdd equals  "3412" ("34" and "12" are strings)
var resultOfAdd = "34" + 12; // resultOfAdd equals "3412" (12 gets coerced into a string)
var resultOfAdd = parseInt("34") + 12; // resultOfAdd equals 46!

理解包含数字的字符串(例如
“42”
)和JavaScript中的数字(例如
42
)之间的区别非常重要。它们是两个不同的东西。

您得到的值()是一个字符串,您应该使用parseInt()

我一直在玩你的代码,但无法更改。我根据需要使用了parseInt(),并将
submit
按钮更改为常规按钮。我要注意的一个主要更改是我使用了
innerHTML
而不是
textContent
。我相信这是写入
的正确形式

我仍然无法让你的代码给出答案。试试看,我是否误解了你的代码


另外,请将您的代码保存在
中,而不要保存在正文中。

@Oded感谢您的帮助。我将立即学习parseFloat和parseInt。@RichardEv感谢您花时间为我链接它。我正在研究这一点以及Oded建议的内容。