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 (
bruttoSalary
nije 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
calculateNetSalary
s 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
resultDiv
kao 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
calculate
koristidocument.getElementById
da pronađe i čita podatke iz polja za unos (bruttoSalary
). - Na osnovu tih podataka, funkcija poziva
calculateNetSalary
za izračunavanje. - Rezultat se “piše” nazad u HTML element sa ID-om
result
koristećiinnerHTML
.
- Funkcija
- Korisnička akcija pokreće JavaScript:
- Kada korisnik unese bruto platu i klikne dugme (koje ima događaj
onclick="calculate()"
), funkcijacalculate
se 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>`;
}
}