Javascript函数显示NaN
我是Javascript新手,正在学习一门课程,在这门课程中,我必须编写一个脚本来计算可负担住房的最高付款额。我被卡住了,因为计算结果一直在返回。再说一遍,这是一个非常基本的脚本,我只是想学习并找出我做错了什么,所以请不要过于挑剔。我计划在我弄明白这个部分后加入CSS/样式。代码如下:Javascript函数显示NaN,javascript,Javascript,我是Javascript新手,正在学习一门课程,在这门课程中,我必须编写一个脚本来计算可负担住房的最高付款额。我被卡住了,因为计算结果一直在返回。再说一遍,这是一个非常基本的脚本,我只是想学习并找出我做错了什么,所以请不要过于挑剔。我计划在我弄明白这个部分后加入CSS/样式。代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Affordab
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Affordable House Payment</title>
<script type="text/javascript">
function doWork()
{
var income = +document.getElementById("monthly_income") + document.getElementById("alimony_income") + document.getElementById("interest_income");
var expenses = +document.getElementById("credit_card") + document.getElementById("car_payments") + document.getElementById("other_paments");
x = .29 * incom;
y = .39 * income;
z = y - expenses;
if (z < x)
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
else if (x < z)
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + x + " per month. This number was calculated by taking 29% of your Gross Income.";
}
else
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
return false;
}
</script>
</head>
<body>
<h1>Maximum Affordable House Payment</h1>
<p>To calculate your maximum affordable house payment, input your information below and click Submit:</p>
<form id="afford" onsubmit="return doWork()">
<fieldset form="afford">
<legend>Income</legend>
<label for="monthly_income">Monthly Income</label>
<input type="number" id="monthly_income" />
<label for="alimony_income">Alimony Income</label>
<input type="number" id="alimony_income" />
<label for="interest_income">Interest/Dividend Income</label>
<input type="number" id="interest_income" />
</fieldset>
<br />
<fieldset form="afford">
<legend>Expenses</legend>
<label for="credit_card">Credit Card Payments</label>
<input type="number" id="credit_card" />
<label for="car_payments">Car Payments</label>
<input type="number" id="car_payments" />
<label for="other_payments">Other Recurring Payments</label>
<input type="number" id="other_payments" />
</fieldset>
<input id="submit" type="submit" value="Submit" />
</form>
<p id="result"></p>
</body>
</html>
经济适用房付款
函数doWork()
{
var收入=+document.getElementById(“月收入”)+document.getElementById(“赡养费收入”)+document.getElementById(“利息收入”);
var费用=+document.getElementById(“信用卡”)+document.getElementById(“汽车付款”)+document.getElementById(“其他付款”);
x=.29*incom;
y=0.39*收入;
z=y-费用;
if(z
收入
月收入
赡养费收入
利息/股息收入
费用
信用卡支付
汽车付款
其他经常性付款
编辑:
@泰德,这是我修改过的剧本。现在,计算不会显示任何内容,很难说它是否输出了一个数字
<script type="text/javascript">
function doWork()
{
var income = parseFloat(document.getElementById("monthly_income").value) + parseFloat(document.getElementById("alimony_income").value) + parseFloat(document.getElementById("interest_income").value);
var expenses = parseFloat(document.getElementById("credit_card").value) + parseFloat(document.getElementById("car_payments").value) + parseFloat(document.getElementById("other_paments").value);
x = .29 * income;
y = .39 * income;
z = y - expenses;
if (z < x)
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
else if (x < z)
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + x + " per month. This number was calculated by taking 29% of your Gross Income.";
}
else
{
document.getElementById("result").innerHTML = "Your maximum affordable house payment is " + z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
return false;
}
</script>
函数doWork()
{
var收入=parseFloat(document.getElementById(“每月收入”).value)+parseFloat(document.getElementById(“赡养费收入”).value)+parseFloat(document.getElementById(“利息收入”).value);
var费用=parseFloat(document.getElementById(“信用卡”).value)+parseFloat(document.getElementById(“汽车付款”).value)+parseFloat(document.getElementById(“其他付款”).value);
x=0.29*收入;
y=0.39*收入;
z=y-费用;
if(z
您不能只添加DOM元素;您需要添加元素中当前的值。此外,您希望添加整数,而不是串联字符串,因此您确实需要:
parseFloat(document.getElementById("monthly_income").value)
等等,而不是
+document.getElementById("monthly_income")
在代码中:
function doWork()
{
var income = +document.getElementById("monthly_income") + document.getElementById("alimony_income") + document.getElementById("interest_income");
获取对表单的引用并通过表单的命名属性访问控件要简单得多。可以从侦听器传递引用。此外,您将获得对控件的引用,您需要的是值,例如
<form onsubmit="return doWork(this);" ...>
您还应该使用var保持变量的局部性:
var x = .29 * income;
var y = .39 * income;
var z = y - expenses;
并保留对输出元素的引用,而不是所有键入的内容:
var outputElement = document.getElementById("result");
if (z < x) {
outputElement.innerHTML = ...
} else if (...) {
...
var outputElement=document.getElementById(“结果”);
if(z
不要给任何表单控件提供名称或ID“submit”,因为它会屏蔽表单的提交方法,因此无法调用它。submit按钮可以是调用函数的普通按钮,无需提交表单,其值应类似于“Calculate”
代码中也有一些拼写错误,在这里它被清理了一点。但是它仍然需要工作
<script>
function doWork(form) {
var income = +form.monthly_income.value + +form.alimony_income.value +
+form.interest_income.value;
var expenses = +form.credit_card.value + +form.car_payments.value +
+form.other_payments.value;
var x = .29 * income;
var y = .39 * income;
var z = y - expenses;
var outputElement = document.getElementById("result");
if (z < x) {
outputElement.innerHTML = "Your maximum affordable house payment is " +
z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
} else if (x < z) {
outputElement.innerHTML = "Your maximum affordable house payment is " +
x + " per month. This number was calculated by taking 29% of your Gross Income.";
} else {
outputElement.innerHTML = "Your maximum affordable house payment is " +
z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
return false;
}
</script>
<h1>Maximum Affordable House Payment</h1>
<p>To calculate your maximum affordable house payment, input your information below and click Submit:</p>
<form id="afford" onsubmit="return doWork(this);">
<fieldset form="afford">
<legend>Income</legend>
<label for="monthly_income">Monthly Income
<input type="number" name="monthly_income"></label>
<label for="alimony_income">Alimony Income
<input type="number" name="alimony_income"></label>
<label for="interest_income">Interest/Dividend Income
<input type="number" name="interest_income"></label>
</fieldset>
<br>
<fieldset form="afford">
<legend>Expenses</legend>
<label for="credit_card">Credit Card Payments
<input type="number" name="credit_card"></label>
<label for="car_payments">Car Payments
<input type="number" name="car_payments"></label>
<label for="other_payments">Other Recurring Payments
<input type="number" name="other_payments"></label>
</fieldset>
<input type="submit" value="Calculate">
</form>
<p id="result"></p>
功能定位(表格){
var收入=+form.monthly_income.value++form.alimony_income.value+
+形式:利息、收入、价值;
var费用=+form.credit_card.value++form.car_payments.value+
+形式.其他付款.价值;
var x=0.29*收入;
风险值y=0.39*收入;
var z=y-费用;
var outputElement=document.getElementById(“结果”);
if(z
收入
月收入
赡养费收入
利息/股息收入
<script>
function doWork(form) {
var income = +form.monthly_income.value + +form.alimony_income.value +
+form.interest_income.value;
var expenses = +form.credit_card.value + +form.car_payments.value +
+form.other_payments.value;
var x = .29 * income;
var y = .39 * income;
var z = y - expenses;
var outputElement = document.getElementById("result");
if (z < x) {
outputElement.innerHTML = "Your maximum affordable house payment is " +
z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
} else if (x < z) {
outputElement.innerHTML = "Your maximum affordable house payment is " +
x + " per month. This number was calculated by taking 29% of your Gross Income.";
} else {
outputElement.innerHTML = "Your maximum affordable house payment is " +
z + " per month. This number was calculated by taking 39% of your Gross Income, less Expenses.";
}
return false;
}
</script>
<h1>Maximum Affordable House Payment</h1>
<p>To calculate your maximum affordable house payment, input your information below and click Submit:</p>
<form id="afford" onsubmit="return doWork(this);">
<fieldset form="afford">
<legend>Income</legend>
<label for="monthly_income">Monthly Income
<input type="number" name="monthly_income"></label>
<label for="alimony_income">Alimony Income
<input type="number" name="alimony_income"></label>
<label for="interest_income">Interest/Dividend Income
<input type="number" name="interest_income"></label>
</fieldset>
<br>
<fieldset form="afford">
<legend>Expenses</legend>
<label for="credit_card">Credit Card Payments
<input type="number" name="credit_card"></label>
<label for="car_payments">Car Payments
<input type="number" name="car_payments"></label>
<label for="other_payments">Other Recurring Payments
<input type="number" name="other_payments"></label>
</fieldset>
<input type="submit" value="Calculate">
</form>
<p id="result"></p>