2012-05-08 57 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