Javascript乘法函数不起作用

时间:2014-03-03 17:47:20

标签: javascript jquery

我是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);

  });
});

4 个答案:

答案 0 :(得分:1)

这里有很多错误。

1)你混淆了jQuery和非jQuery太多了。 <{1}}更合适的时候不要使用$(selector)[0].value

2)当他们只有一个名字时,你试图通过他们的ID来定位你的元素。例如,$(selector).val()应为$("#Capital_PA")

3)当$('[name="Capital_PA"]')选择器定位于.input元素本身时,它会定位到一个类。喜欢:input

Here's some corrected code

答案 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添加到输入字段。

下一个问题我有:为什么没有提供“值”属性? 如何设置输入字段的值?