0

Функции numCurrentValue и numTransferValue возвращают undefined, хотя console.log внуртри функции говорит обратное. Говорит что есть такое значение которые есть в массиве и тип number для переменных currentNumber и transferNumber.

И еще вопрос arr это массив или это объект, не могу разобрать. Если знаете подскажите, плиииз). Не судите строго, я недавно начал изучать js.

Как можно это решить? Желательно простыми какими-то методами.

            <select class="currentCurrency"></select>
            <select class="transferCurrency"></select>
            <label> Введите число: <input class="inputSum"></label>
            <button class="btn">Конвертировать<button>
            <div class="output"></div>

            let curCurrency = document.querySelector('.currentCurrency');
            let transCurrency = document.querySelector('.transferCurrency');
            let inputSum = document.querySelector('.inputSum');
            let btn = document.querySelector('.btn');
            let show = document.querySelector('.output');

            let arr = {Доллар: 1, Рубль: 62.92, Тенге: 381.19};

            let currency = Object.keys(arr);
            fillSelect(curCurrency, currency);
            fillSelect(transCurrency, currency);

            curCurrency.addEventListener('change', numCurrentValue);
            function numCurrentValue() {
                currentNumber = arr[this.value];
                console.log(currentNumber);
                console.log(typeof currentNumber);
                return currentNumber;
            }

            transCurrency.addEventListener('change', numTransferValue);
            function numTransferValue() {
                transferNumber = arr[this.value];
                console.log(transferNumber);
                console.log(typeof transferNumber);
                return transferNumber;
            }

            btn.addEventListener('click', function () {
                show.innerHTML = Number(inputSum.value) / numCurrentValue() * numTransferValue();
            });

            function fillSelect(select, arr) {
                for (let i = 0; i < arr.length; i++) {
                    select.add(new Option(arr[i]));
                }
            } 
  • console.log внуртри функции говорит обратное - только когда эти функции работают как обработчики событий, когда ты их просто вызываешь numCurrentValue() * numTransferValue() у тебя this это window, и window.value == undefined – Grundy Jan 28 '20 at 11:41
  • По вашему как мне надо прописать функции numCurrentValue() и numTransferValue()? – Мирас Текесбаев Jan 28 '20 at 12:58
  • так чтобы они не обращались к this внутри себя – Grundy Jan 28 '20 at 21:24
  • @МирасТекесбаев я уже показал Вам, как это нужно сделать - https://ru.stackoverflow.com/questions/1075248/%d0%9a%d0%be%d0%bd%d0%b2%d0%b5%d1%80%d1%82%d0%b5%d1%80-%d0%b2%d0%b0%d0%bb%d1%8e%d1%82-%d0%bd%d0%b0-%d0%bc%d0%b8%d0%bd%d0%b8%d0%bc%d0%b0%d0%bb%d0%ba%d0%b0%d1%85-number-%d0%be%d0%bc-%d0%be%d0%b1%d0%b5%d1%80%d0%bd%d1%83%d0%bb-%d0%b2%d1%81%d0%b5-%d0%b2%d0%b2%d0%be%d0%b4%d0%b8%d0%bc%d1%8b%d0%b5-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d0%b5-%d0%bd%d0%be-%d0%b2%d1%8b%d0%b4%d0%b0%d0%b5%d1%82/1075253#1075253 –  Jan 29 '20 at 15:32

0 Answers0