2017-03-22 3 views
0

Von der Eingabe in der HTML-Eingabe gibt der Benutzer den Namen des Mitarbeiters und die Anzahl der Arbeitsstunden ein. Von hier aus auf dem Submit-Button nimmt er die Informationen und speichert sie in den Variablen, so dass ich berechnen kann, wie viel ihr Gehalt war. Jetzt kommt auch das Überstundengeld. Ich dachte, das wäre auf dem richtigen Weg, aber wenn ich zu meinem HTML zurückgehe, wird "undefined" angezeigt. Irgendwelche Vorschläge?Gehaltsberechnungsfunktion in JavaScript funktioniert nicht

//Global Variables 
var employeeName = document.getElementById("name").value; 
var employeeHours = document.getElementById("hours").value; 



function paySalary() { 
    if (employeeHours <= 40) { 
     var regtime = 11.00 * employeeHours; 
     var overtime = 0.00; 
     var salary = regtime; 
    } else if (employeeHours > 40) { 
     var regtime = (11.00 * 40); 
     var overtime = ((11.00 * 1.5) * (employeeHours - 40)); 
     var salary = (regtime + overtime); 
    } 
     document.getElementById("results").innerHTML = "Employee Name: " + employeeName + " | Employee Gross Pay: " + salary; 
} 

//Event Listener to Submit 
var submitButton = document.getElementById("submit"); 
if (submitButton.addEventListener) { 
    submitButton.addEventListener("click", paySalary, false); 
} else if (submitButton.attachEvent) { 
    submitButton.attachEvent("onclick", paySalary); 
} 

Screenshot of output

Antwort

0

Blick auf den Umfang Ihres Gehalts variabel, ist es innerhalb des if-else-Block definiert. Machen Sie Ihr Gehalt Variable zugänglich document.getElementById(), indem Sie in Ihrer Funktion wie folgt erklärt:

<html> 
 
<script> 
 

 
function paySalary() { 
 
    var employeeName = document.getElementById("name").value; 
 
    var employeeHours = document.getElementById("hours").value; 
 

 
    if (employeeHours <= 40) { 
 
     var regtime = 11.00 * employeeHours; 
 
     var overtime = 0.00; 
 
     var salary = regtime; 
 
    } else if (employeeHours > 40) { 
 
     var regtime = (11.00 * 40); 
 
     var overtime = ((11.00 * 1.5) * (employeeHours - 40)); 
 
     var salary = (regtime + overtime); 
 
    } 
 
    document.getElementById("name").innerHTML = "Employee Name: " + employeeName; 
 
    document.getElementById("pay").innerHTML = "Employee Gross Pay: " + salary; 
 
} 
 

 
</script> 
 

 
<body> 
 
<input id="name" value="Kamesh Dashora"></input> 
 
<input id="hours" value=40></input> 
 
<br> 
 
<span id="pay">0</span> 
 
<br> 
 
<button id="submit" onclick="paySalary()">Submit</button> 
 
<body> 
 
</html>

+0

ich das versucht, und ich habe es für eine ganze Sekunde zu arbeiten, und dann hat es geschafft nichts, aber gib mir einen Wert von 0. Ich glaube, das liegt an meinem: 'var employeeName = document.getElementById (" name "). Value; var employeeHours = document.getElementById ("Stunden"). Value; 'Gibt es etwas, was Sie vorschlagen? Ich glaube nicht, dass mein Eingabewert richtig zu meinem Javascript auf dem onclick geht – Megan

+0

Tun es so, das funktioniert perfekt. Das Problem war, dass Sie die globalen Variablen employeeName und employeeHours deklarierten, die nur beim Laden der Seite ausgelöst werden, d. H. Nur einmal initialisiert werden. Nachdem Sie die Funktion aufgerufen haben, wird sie nicht mehr initialisiert, wenn die Variablen global sind. Also tu es so. – Kamesh

+0

Bitte upvote und akzeptiere :) – Kamesh