2013-02-17 116 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