Я новичок в JS и пытаюсь учиться самостоятельно. Я надеюсь, что здесь меня не обидят, но Stackoverflow выглядит как место, где можно задавать вопросы.

У меня есть этот код для расчета, и он работает. Но я хочу изменить приглашение для ввода и показать результаты на других входах с помощью кнопки отправки.

Или! Что было бы удивительно, если бы расчет происходил на лету, пока пользователь вводит числа (я даже не уверен, возможно ли это).

Заранее спасибо, и это мой JS-код:

var incomePerYear = prompt("Income per year: ");

var perYear = parseFloat(((incomePerYear) * 1 / 100) - (incomePerYear * 6 / 1000));

var perMonth = parseFloat(perYear / 12);

document.write("Income per year: " + perYear.toLocaleString('se') + "<br>");

document.write("Income per month: " + perMonth.toFixed(4));
1
Vince 14 Мар 2018 в 12:38

2 ответа

Лучший ответ

Вы можете использовать событие onkeyup для расчета на лету.

Кстати, parseFloat для числа лишнее.

function calculate(incomePerYear) {
    var perYear = incomePerYear / 100 - incomePerYear * 6 / 1000,
        perMonth = perYear / 12;

    document.getElementById('year').innerHTML = perYear.toLocaleString('se');
    document.getElementById('month').innerHTML = perMonth.toFixed(4);
}
<p>Income per year: <input onkeyup="calculate(this.value)" type="text"></p>
<p>Income per year: <span id="year"></span></p>
<p>Income per month: <span id="month"></span></p>
0
Nina Scholz 14 Мар 2018 в 09:48

Вы можете попробовать это. Возможно, вам нужно проверить ввод, чтобы убедиться, что это номер.

<input type="text" id="incomeperyear">
<div id="perYear"></div>
<div id="perMonth"></div>

<script type="text/javascript">
    $(function(){

             $('#incomeperyear').on('focus keyup change', function(){
              var incomePerYear = $(this).val();
              var perYear = parseFloat(((incomePerYear) * 1 / 100) - (incomePerYear * 6 / 1000));
              var perMonth = parseFloat(perYear / 12);
              $("#perYear").text('perYear :'+' '+perYear.toLocaleString('se'));
              $("#perMonth").text('perMonth :'+' '+perMonth.toFixed(4));

        });
        })
</script>

Это сработает, даже если вы скопируете номер в другое место.

https://jsfiddle.net/c982myft/

0
sarath s rajendran 14 Мар 2018 в 10:30