我是javascript的新手,我正在尝试让下面的计算在用户输入值时执行。我无法让计算完全运行,我不知道我哪里出错了。我很感激在解决问题和理解错误方面的任何帮助。
输入是:
<input name="ConceptEstimate_GrandTotal" type="text" />
<input name="ConceptEstimate_Exp" type="text" />
<input name="ConceptEstimate_Cap" type="text" />
<input name="ConceptEstimate_ProjMgmt" type="text" />
<input name="ConceptEstimate_PA" type="text" />
<input name="ConceptEstimate_DB" type="text" />
<input name="ConceptEstimate_Test" type="text" />
<input name="ConceptEstimate_Deploy" type="text" />
<input name="Capital_PA" type="text" disabled="disabled" />
<input name="Expense_PA" type="text" disabled="disabled" />
<input name="Capital_DB" type="text" disabled="disabled" />
<input name="Expense_DB" type="text" disabled="disabled" />
<input name="Capital_TD" type="text" disabled="disabled" />
<input name="Expense_TD" type="text" disabled="disabled" />
<input name="Capital_S" type="text" disabled="disabled" />
<input name="Expense_S" type="text" disabled="disabled" />
<input name="Capital_Total" type="text" disabled="disabled" />
<input name="Expense_Total" type="text" disabled="disabled" />
功能是:
$(document).ready(function () {
$(".input").keyup(function () {
var a = +$("#ConceptEstimate_GrandTotal")[0].value;
var b = +$("#ConceptEstimate_Exp")[0].value;
var c = +$("#ConceptEstimate_Cap")[0].value;
var d = +$("#ConceptEstimate_ProjMgmt")[0].value;
var e = +$("#ConceptEstimate_PA")[0].value;
var f = +$("#ConceptEstimate_DB")[0].value;
var g = +$("#ConceptEstimate_Test")[0].value;
var h = +$("#ConceptEstimate_Deploy")[0].value;
$("#Capital_PA")[0].value = a * (c/100) * (e/100);
$("#Expense_PA")[0].value = a * (b/100) * (e/100);
$("#Capital_DB")[0].value = a * (c/100) * (f/100);
$("#Expense_DB")[0].value = a * (b/100) * (f/100);
$("#Capital_TD")[0].value = (a * (c/100) * (g/100)) + (a * (c/100) * (h/100));
$("#Expense_TD")[0].value = (a * (b/100) * (g/100)) + (a * (b/100) * (h/100));
$("#Capital_S")[0].value = a * (c/100) * (d/100);
$("#Expense_S")[0].value = a * (b/100) * (d/100);
});
});
答案 0 :(得分:1)
这里有很多错误。
1)你混淆了jQuery和非jQuery太多了。 <{1}}更合适的时候不要使用$(selector)[0].value
。
2)当他们只有一个名字时,你试图通过他们的ID来定位你的元素。例如,$(selector).val()
应为$("#Capital_PA")
。
3)当$('[name="Capital_PA"]')
选择器定位于.input
元素本身时,它会定位到一个类。喜欢:input
。
答案 1 :(得分:0)
您正在尝试查找此类元素
$("#ConceptEstimate_GrandTotal")
这意味着“使用jQuery查找具有ConceptEstimate_GrandTotal
id 的元素
当我们查看您的 HTML 时,唯一类似的元素是
<input name="ConceptEstimate_GrandTotal" type="text" />
但此元素的名称为ConceptEstimate_GrandTotal
,而不是 id 。
因此,$(...)
的结果只是一个空的 jQuery 对象(让我们称之为x
),
所以 x[0]
未定义 而且您无法执行undefined.value
,因此您将收到错误并且一切都会停止。
这适用于您尝试获取元素的任何地方。
如果您继续使用 vanilla JavaScript document.getElementById(id_attribute_value)
,问题可能会更清楚,因为这样会产生null
(falsy)而不是空对象(truthy)找不到任何东西
最简单的解决方法是将相关的 id 属性添加到元素
<input name="ConceptEstimate_GrandTotal"
id="ConceptEstimate_GrandTotal"
type="text"
/>
答案 2 :(得分:0)
您似乎需要一些基础知识:
<input /> -> $('input')
<input id="whatever" /> -> $('#whatever')
<input class="whatever" /> -> $('.whatever')
<input name="whatever" /> -> $('[name="whatever"]')
答案 3 :(得分:-1)
我认为这可能是因为您从表单中获得的值都是字符串。 你试过parseInt()值吗?
例如
$("#Capital_PA")[0].value = parseInt(a) * (parseInt(c)/100) * (parseInt(e)/100)
如果不是这样,你能提供一些输出或错误消息吗?
此外,您必须将属性ID添加到输入字段。
下一个问题我有:为什么没有提供“值”属性? 如何设置输入字段的值?