Przelicznik walut

0

mam problem z przelicznikiem,zadanie robię i nie mogę znaleźć czemu mi działać nie chce "Przelicznik Walut.html:30 Uncaught TypeError: przelicz is not a function
at HTMLInputElement.onclick (Przelicznik Walut.html:30)"

dopiero co się uczyć zacząłem.

<form action="" name="przelicz">
	Przelicz z:
	<select name="zczego">
		<option class="pln"> PLN </option>
		<option class="usd"> USD </option>
		<option class="chf" > CHF </option>
	</select>

	kwota
	<input type="number" name="kwota" placeholder="Kwota" style="text-align:center;margin-right:5px;">
	na:
	<select name="na">
		<option class="usd"> USD </option>
		<option class="chf"> CHF </option>
		<option class="pln"> PLN </option>
	</select>
	otrzymasz:
	<input type="number" id="wynik" placeholder="wynik" style="text-align:center" disabled>
		
	<input type="button" value="przelicz walutę" onclick="przelicz();">
</form>
<script>
	function przelicz()
	{
		var pln = 1;
		var usd = 3.42;
		var chf = 0.81;
		
		var krok1;
		var krok2;
		
		switch(przelicz.zczego.class)
		{
			case "pln":
				krok1 = przelicz.zczego.class.value*pln;
				break;
		}
		
		document.getElementById("wynik").value= krok1;
	}
</script>

2

Ten błąd jest spowodowany tym że nazwałeś tak samo formę jak i funkcję:

<form action="" name="przelicz">
function przelicz()
1

Nie dam sobie głowy uciąć, ale prawdopodobnie definiujesz funkcję przelicz poniżej formularza. Uzyj addEventListener lub przenieś skrypt nad formularz.

0

aa no dzięki,przyznam że JS nie jest taki łatwy do ogarnięcia

0

a nie można by tego jakoś bardziej zrozumiale/łatwiej zrobić ??

0

Można :) JSFiddle

function createMoney(amount, currency) {
    return Object.freeze({
        amount, currency
    });
}

function exchange(money, toCurrency) {
    const exchangeRate = exchangeRates[money.currency][toCurrency];
    const exchangedAmount = money.amount * exchangeRate;

    return createMoney(exchangedAmount, toCurrency);
}

const exchangeRates = {
    PLN: {
        USD: 0.263581,
        CHF: 0.261818493
    },
    USD: {
        PLN: 3.79463439,
        CHF: 0.993505455
    },
    CHF: {
        USD: 1.006537,
        PLN: 3.81943991
    }
};

const form = document.querySelector('[name="przelicz"]');

form.addEventListener('submit', function (e) {
    e.preventDefault();

    const amount = e.target.querySelector('[name="kwota"]').value;
    const fromCurrency = e.target.querySelector('[name="zczego"]').value;
    const toCurrency = e.target.querySelector('[name="na"]').value;

    const moneyToExchange = createMoney(amount, fromCurrency);
    const exchangedAmount = exchange(moneyToExchange, toCurrency);

    const result = e.target.querySelector('#wynik');
    
    result.value = exchangedAmount.amount;
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1