2013-02-17 4 views
1

월급을 입력하고 시간을 계산하여 계산하면 모두 합계 테이블에이 정의되지 않은 입니다. 여기 내 자바 스크립트입니다 :계산 결과가 합계 테이블에 표시되지 않습니다.

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 객체를 unwrap하려면 포함 된 dom 요소에 액세스 할 수 있도록 [0]을 사용해야합니다.

$("#id")[0] 

이러한 변경을 수행하면 반영된 계산을 볼 수 있습니다. 예를 들어 $('job').value이 실제로 $('#job')[0].value이거나 jquery의 구현을 계속 사용하려면 $('#job').val()을 사용하여 값을 가져올 수 있습니다.

이와 유사하게 jquery의 구현 인 innerHTML에 액세스 할 수도 있습니다. 즉,이 변경 것 : $('overtime').innerHTML = overtime

+0

죄송합니다, 내 var에 $ = 함수 (ID)를 추가하는 것을 잊었다 { 반환 document.getElementById를 (ID) $('#overtime').html(overtime)에; } 내 잘라 내기 및 붙여 넣기 상단에 있습니다. – TaraX

+0

@ user2081142 - 그걸로 상황이 약간 달라질 수 있습니다. –

+0

죄송합니다 - jquery가 무엇인지 모르겠습니다. 내 첫 번째 자바 스크립트 수업을 듣고있어, 그래서 만약 내가 좀 천천히 나를 곰. – TaraX

관련 문제