1

我正在尝试创建一个薪水计算器,但是当我输入每小时费率和小时数并点击计算时,我得到的只是在我的总计表中未定义。这是我的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;
}

我确定我错过了一些愚蠢的东西,但我已经盯着这段代码好几天了,无法弄清楚我做错了什么。感谢您的关注!

4

1 回答 1

1

编辑

有问题的代码是这样的:

hours.value

它的问题是它hours已经是一个数字,而数字没有value可用的方法。hours.value更改to的所有实例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)

于 2013-02-17T21:06:45.593 回答