2013-02-17 112 views
1

我試圖創建一個工資計算器,但是當我輸入每小時費率和小時數並計算時,我所得到的全部數據是undefined在我的總計表中。下面是我的javascript:計算結果不顯示在總計表中javascript

var $ = function (id) { 
return document.getElementById(id); 
} 

function updateTotal() { 

var rate; 
var hours = parseFloat($("numHours").value); 
var regularHours; 
var overtime; 
var doubletime; 

    //begin determine hourly rate 
    function checkJob() { 
    if ($('job').value == 'job0') { 
    rate = 0; 
    } 
    if ($('job').value == 'job1') { 
    rate = 12; 
    } 
    if ($('job').value == 'job2') { 
    rate = 10; 
    } 
    if ($('job').value == 'job3') { 
    rate = 11; 
    } 
    } 

    //calculate hours breakdown 
    function checkHours() { 
    if (hours.value <= 40) { 
    regularHours = hours.value; 
    overtime = 0; 
    doubletime = 0; 
    } 

    if (hours.value < 60) { 
    regularHours = 40; 
    overtime = hours.value-40; 
    doubletime=0; 
    } 

    if (hours.value >=60) { 
    regularHours = 40; 
    overtime = 20; 
    doubletime = hours.value-60; 
    } 
    } 

    checkJob(); 
    checkHours(); 

    var salary = (regularHours * rate) + (overtime * (rate * 1.5)) + (doubletime * (rate * 2)) 



    //display amounts 
    $('regularHours').innerHTML = regularHours; 
    $('overtime').innerHTML = overtime; 
    $('doubletime').innerHTML = doubletime; 
    $('salary').innerHTML = "$ " + salary; 
} 

我敢肯定,我失去了一些愚蠢的,但我在此代碼爲天一直盯着,不能找出我做錯了。感謝您的期待!

回答

1

編輯

有問題的代碼是這樣的:

hours.value 

它是hours已經是一個數字,號碼沒有向它提供的方法value的問題。將hours.value的所有實例更改爲hours將解決該問題並正確輸出計算結果。

看到這個演示:http://jsfiddle.net/gLthv/


問題是你要實現你的jQuery選擇的方式。您應該使用 document.getElementById()代替,或記住,要選擇一個ID,您需要與 #

$("#id") 

這只是問題的第一部分,雖然前綴ID名稱。接下來的部分是你正在使用jquery,但期望dom元素。要打開jquery對象,您需要使用[0]才能訪問包含的dom元素。

$("#id")[0] 

一旦你做出這些改變,你應該能夠看到反映的計算結果。例如,$('job').value應該確實是$('#job')[0].value,或者如果您願意堅持使用jquery的實現,那麼您可以使用$('#job').val()來獲取該值。

與此類似,您還可以訪問jQuery的 innerHTML實現。這將改變這個: $('overtime').innerHTML = overtime$('#overtime').html(overtime)

+0

對不起,忘了加我的變量$ =功能(ID){ 回報的document.getElementById(ID); } 位於我剪切和粘貼的頂部。 – TaraX 2013-02-17 21:12:36

+0

@ user2081142 - 那會讓事情有點不同。 – 2013-02-17 21:13:27

+0

對不起 - 我不知道jquery是什麼。我正在參加我的第一個JavaScript課程,所以如果我有點慢,請耐心等待。 – TaraX 2013-02-17 21:17:01