坚持从表单元素简单的计算

时间:2014-11-13 10:42:57

标签: javascript jquery dom

我正在使用脚本模板在用户点击按钮时创建代码块,这样可以正常工作,但我希望能够在这些克隆区域内计算总数,因此我有一个内联onBlur语句作为如下

onblur = "multiply.call(this, this.form.elements.Qty{{ID}}.value, this.form.elements.Cost{{ID}}.value, this.form.elements.Total{{ID}})"

由于克隆功能将ID更新为值,因此评估为

onblur = "multiply.call(this, this.form.elements.Qty1.value, this.form.elements.Cost1.value, this.form.elements.Total1)"

我的功能是

function multiply(one, two, three) {
    console.dir(three);
    document.getElementById(three).value = (parseFloat(one) + parseFloat(two)).toFixed(2); // error here
};

如果我显示一个和两个,他们有表格中的值,但是我写错了回写Uncaught TypeError: Cannot set property 'value' of null的for。

控制台将元素3的ID显示为Total1

我认为这可能与jQuery克隆和DOM没有更新有关。值传递正常,但对象可能不是。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

document.getElementById(three)不返回任何匹配项(即undefined)。

您已将某个元素作为参数multiply传递给您的函数three,并且您稍后将其用作表示其ID的字符串。

如果three被验证为元素,请不要先调用document.getElementById(three).value,而应直接three.value