2012-05-08 59 views
0

我想在网格内计算2个textBox值的倍数,按键或键盘事件。 你能为我提供一些JavaScript吗?我使用下面的代码不为我工作 的JavaScript网格内计算

var a = document.getElementById(txtlabchrgsNooflab); 
    var b = document.getElementById(txtlabchrgsTotalCost); 
    txtlabchrgsTotalCost=a*b;
+0

'txtlabchrgsTotalCost = parseDouble(a.value())* parseDouble(b.value());'? – mshsayem

+0

hi @mshsayem ...我得到这个错误Microsoft JScript运行时错误:'txtlabchrgsNooflab'未定义 – chitra

+1

什么是txtlabchrgsNooflab和txtlabchrgsTotalCost?这些变量是否在别处定义?或者他们是页面元素的ID?如果它们是ID,则需要将它们放在引号中,即'getElementById(“txtlabchrgsNooflab”)'。 – Carl

回答

2

首先 - 如果你想乘两个东西放在一起,他们将必须是数字。

此刻你ab变量只是你已经确定了HTML元素,你不能把他们相乘在一起。 (虽然要注意卡尔的评论;如果这意味着字面字符串而不是变量名称,则可能需要引用txtlabchrgsNooflab)。

因此,您需要将这些元素的值作为数字数据类型来获取。获得价值应该像调用.value()一样简单的文本输入;但是,这会返回一个字符串。这可能会根据需要自动强制为一个数字类型,但我会更快乐(并认为它更清晰)明确呼吁parseFloat

一旦你有了两个浮标,你可以愉快地把它们相乘。所以,你的代码看起来应该像下面这样:

var elemA = document.getElementById(txtlabchrgsNooflab); 
var elemB = document.getElementById(txtlabchrgsTotalCost); 
var a = parseFloat(elemA.value()); 
var b = parseFloat(elemB.value()); 

txtlabchrgsTotalCost = a * b; 

OK,所以使用本上面的代码的结果:

error: Unable to get value of the property 'value': object is null or undefined

,我们能从这个错误消息推断?那么,运行时无法计算value,因为它被调用的是null或undefined。

如果你看看代码,很清楚哪些变量可能是空的或未定义的 - 你应该能够检查你的HTML,看看这是为什么,并进行必要的更正。

+0

var elemA = document.getElementById(“txtlabchrgsNooflab”); var elemB =文档。的getElementById( “txtlabchrgsTotalCost”); var a = parseFloat(elemA.value()); var b = parseFloat(elemB.value()); txtlabchrgsTotalCost = a * b;我用过,但它的错误Microsoft JScript运行时错误:无法获取属性“值”的值:对象为空或未定义 – chitra

+0

@user我根据您的评论更新了我的答案。看起来你的代码片段有一些非常简单的问题,超出了你发布的内容。 –

+0

但这些txtbox r在网格的页脚模板中...所以它不识别啊? – chitra