Ovo je primjer JavaScript koda za izračun neto plaće na osnovu unesene bruto plaće uz primjenu stopa doprinosa za FBiH FBiH: 17% za penzijsko i invalidsko osiguranje, 12,5% za zdravstveno osiguranje i 1,5% za osiguranje u slučaju nezaposlenosti (ukupno 31% na bruto platu). Ovaj primjer ne uključuje faktor ličnog odbitka prema poreznoj kartici, nego samo skida iznos doprinosa, ali uz pojašnjenja ispod može se kreirati i realan kalkulator netto plaće.
Objašnjenje koda:
Šta ovaj kod radi?
Ovaj kod omogućava korisniku da unese bruto platu u polje na HTML stranici, klikne na dugme, i dobije neto platu (iznos nakon odbijanja doprinosa) prikazanu direktno na stranici.
JavaScript ovdje:
- Čita korisnički unos iz HTML forme.
- Računa neto platu na osnovu unaprijed definisanih pravila.
- Prikazuje rezultat direktno na stranici.
Objašnjenje koda korak po korak:
1. Prva funkcija: calculateNetSalary
function calculateNetSalary(bruttoSalary) {
const pensionInsurance = 0.17; // 17% za penzijsko osiguranje
const healthInsurance = 0.125; // 12.5% za zdravstveno osiguranje
const unemploymentInsurance = 0.015; // 1.5% za nezaposlenost
const totalContributions = pensionInsurance + healthInsurance + unemploymentInsurance;
const nettoSalary = bruttoSalary * (1 - totalContributions);
return nettoSalary.toFixed(2); // Zaokružujemo na 2 decimale
}
Šta se dešava ovdje:
bruttoSalary: Ovo je broj koji funkcija prima kao ulaz (bruto plata).- Doprinosi: Definisani su kao konstante:
- Penzijsko osiguranje (17%)
- Zdravstveno osiguranje (12.5%)
- Osiguranje za nezaposlenost (1.5%)
- Ukupni doprinosi: Sabiremo sve doprinose i izračunamo koliko ukupno procenata treba odbiti.
- Izračun neto plate: Bruto plata se množi s
(1 - totalContributions)da bi se dobila neto plata. - Zaokruživanje: Funkcija koristi
.toFixed(2)da ograniči rezultat na 2 decimalna mjesta (primjer:1234.56).
Šta funkcija radi s rezultatima:
- Izračunatu vrijednost vraća onome ko ju je pozvao. Ona ne prikazuje ništa na ekranu direktno.
2. Druga funkcija: calculate
function calculate() {
const bruttoSalary = document.getElementById('bruttoSalary').value;
const resultDiv = document.getElementById('result');
if (bruttoSalary && !isNaN(bruttoSalary) && bruttoSalary > 0) {
const nettoSalary = calculateNetSalary(Number(bruttoSalary));
resultDiv.innerHTML = `Vaša neto plaća iznosi: <strong>${nettoSalary} KM</strong>`;
} else {
resultDiv.innerHTML = `<span style="color: red;">Unesite validan iznos bruto plaće!</span>`;
}
}
Šta se dešava ovdje:
document.getElementById('bruttoSalary').value:- Ovom linijom JavaScript “traži” HTML element sa
id="bruttoSalary". - Dohvata vrijednost koju je korisnik unio u to polje (to je bruto plata).
- Ovom linijom JavaScript “traži” HTML element sa
document.getElementById('result'):- Ovo pronalazi HTML element s
id="result", gdje će rezultat biti prikazan.
- Ovo pronalazi HTML element s
- Validacija unosa:
- Provjerava da li je bruto plata unijeta (
bruttoSalarynije prazno). - Provjerava da li je broj (
!isNaN(bruttoSalary)). - Provjerava da li je veći od nule (
bruttoSalary > 0).
- Provjerava da li je bruto plata unijeta (
- Pozivanje funkcije
calculateNetSalary:- Ako su svi uslovi ispunjeni, funkcija poziva
calculateNetSalarys bruto platom kao argumentom i dobija neto platu.
- Ako su svi uslovi ispunjeni, funkcija poziva
- Prikaz rezultata:
- Ako je unos ispravan, neto plata se prikaže unutar
resultDivkao HTML sadržaj. - Ako unos nije ispravan, prikaže se poruka o grešci crvenim slovima.
- Ako je unos ispravan, neto plata se prikaže unutar
Kako funkcije rade s HTML-om?
- HTML omogućava korisnički unos:
- HTML ima
<input>polje za unos bruto plate i<div>za prikaz rezultata.
<input type="number" id="bruttoSalary" placeholder="Unesite bruto platu"> <div id="result"></div> - HTML ima
- Interakcija funkcija s HTML-om:
- Funkcija
calculatekoristidocument.getElementByIdda pronađe i čita podatke iz polja za unos (bruttoSalary). - Na osnovu tih podataka, funkcija poziva
calculateNetSalaryza izračunavanje. - Rezultat se “piše” nazad u HTML element sa ID-om
resultkoristećiinnerHTML.
- Funkcija
- Korisnička akcija pokreće JavaScript:
- Kada korisnik unese bruto platu i klikne dugme (koje ima događaj
onclick="calculate()"), funkcijacalculatese pokreće i izvršava sav posao.
- Kada korisnik unese bruto platu i klikne dugme (koje ima događaj
Zajednički rad HTML-a i JavaScript-a:
- HTML pruža strukturu:
- Polje za unos (
<input>), mjesto za rezultat (<div>), i dugme za pokretanje proračuna.
- Polje za unos (
- JavaScript daje život stranici:
- Čita podatke od korisnika, računa rezultat, i vraća ga na stranicu.
- Ako ima grešaka (npr. korisnik ne unese ništa ili unese negativan broj), JavaScript prikaže poruku upozorenja.
Konačan kod:
HTML i JavaScript rade zajedno da stranica funkcioniše:
HTML:
<input type="number" id="bruttoSalary" placeholder="Unesite bruto platu">
<button onclick="calculate()">Izračunaj</button>
<div id="result"></div>
JavaScript:
function calculateNetSalary(bruttoSalary) {
const pensionInsurance = 0.17;
const healthInsurance = 0.125;
const unemploymentInsurance = 0.015;
const totalContributions = pensionInsurance + healthInsurance + unemploymentInsurance;
const nettoSalary = bruttoSalary * (1 - totalContributions);
return nettoSalary.toFixed(2);
}
function calculate() {
const bruttoSalary = document.getElementById('bruttoSalary').value;
const resultDiv = document.getElementById('result');
if (bruttoSalary && !isNaN(bruttoSalary) && bruttoSalary > 0) {
const nettoSalary = calculateNetSalary(Number(bruttoSalary));
resultDiv.innerHTML = `Vaša neto plaća iznosi: <strong>${nettoSalary} KM</strong>`;
} else {
resultDiv.innerHTML = `<span style="color: red;">Unesite validan iznos bruto plaće!</span>`;
}
}