Как исправить умножение Javascript на обмен - PullRequest
0 голосов
/ 28 января 2019

Я не уверен, почему мой код не умножает два числа, когда я их меняю.Как только я ввожу число в поле Multiplier, функция onchange продолжает добавлять значения и, если его значение равно NULL, вводит «NaN»

<body> 
<h1>Mutiply</h1>
<p>Multiplicand: <input type="text" id="multiplicand" value="0" onchange="multiply()"></p>
<p>Multiplier: <input type="text"/ id="multiplier" value="0" onchange="multiply()"></p> <br>
<div> 
    <p><span id="showMulipicand">0</span>
     × 
    <span id="showMultiplier">0</span> = <span id="showProduct">0</span></p> 
</div> 
<script src="multiply.js"></script> 


multiply() { 
  var multiplicand = document.getElementById('multiplicand').value; 
  var multiplier = document.getElementById('multiplier').value; 
  var showProduct = parseInt(multiplicand) * parseInt(multiplier); 
  var p = document.getElementById('showProduct'); 
  p.innerHTML += showProduct; 
}

1 Ответ

0 голосов
/ 28 января 2019

Вы добавляете результат к содержимому вашего тега p.

Если вы просто хотите показать результат, вам нужно переопределить innerHTML вместо добавления к нему.

p.innerHTML = showProduct;

Также, если вы хотите обновить результат по мере ввода, используйте событие oninput вместо onchange, которое будет срабатывать только при выходе из поля <input>.

Если вы такжехотите обновить поля множителя и умножения, просто сделайте то же самое, что и для продукта:

document.getElementById('showMulipicand').innerHTML = multiplicand;

Чтобы избежать проблем NaN, когда вы читаете множитель / множитель из <input>, сделайте логическоеor с 0, таким образом, если поле пустое, его значение будет 0.

Вам также следует изменить тип <input> с text на number.

Вот код для отображения результата умножения:

function multiply() { 
  const multiplicand = document.getElementById('multiplicand').value || 0; 
  const multiplier = document.getElementById('multiplier').value || 0; 
  const product = parseInt(multiplicand) * parseInt(multiplier);
  document.getElementById('showMulipicand').innerHTML = multiplicand; 
  document.getElementById('showMultiplier').innerHTML = multiplier; 
  document.getElementById('showProduct').innerHTML = product; 
}
<h1>Mutiply</h1>
<p>Multiplicand: <input type="number" id="multiplicand" value="0" oninput="multiply()"></p>
<p>Multiplier: <input type="number" id="multiplier" value="0" oninput="multiply()"></p>
<p>
    <span id="showMulipicand">0</span> × 
    <span id="showMultiplier">0</span> = <span id="showProduct">0</span>
</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...