JavaScript如何进行计算并显示在输入框中?
How to perform a calculation and display it in an input box in JavaScript?
我正在尝试对两个数字进行简单计算,让用户可以将它们相乘或相除。我知道还有其他方法可以用更少的代码来做到这一点,但我想弄清楚为什么我的结果框显示 NaN。我已经测试以确保 userInput1 和 userInput2 变量确实都是数字,但看起来其他函数内部发生了某些事情以使其成为 NaN。`
/*eslint-env browser*/
var $ = function(id) {
"use strict";
return window.document.getElementById(id);
};
var userInput1 = parseInt($('input1'), 10);
var userInput2 = parseInt($('input2'), 10);
//TO TEST
console.log(typeof userInput1);
console.log(typeof userInput2);
function doTheMultiCalc() {
"use strict";
var multiCalculation = userInput1 * userInput2;
//TO TEST
console.log(typeof(multiCalculation));
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
var divCalculation = userInput1 / userInput2;
//TO TEST
console.log(typeof(divCalculation));
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label for="input1">1st Number</label><input id="input1"><br>
<label for="input2">2nd Number</label><input id="input2"><br>
<button id="multiply" type="button">Multiply</button>
<button id="divide" type="button">divide</button><br>
<label for="resultOutput">Result is</label> <input id="resultOutput">
`
我赞扬你试图解决这个问题。所以我看到了两个问题。
首先,您实际上并没有获得输入的值。您需要使用 $('input1').value
来检索输入的实际值。
您还需要在执行每个操作之前获取该值。在这里您可以看到它的实际效果:
/*eslint-env browser*/
var $ = function(id) {
"use strict";
return window.document.getElementById(id);
};
function doTheMultiCalc() {
"use strict";
var userInput1 = parseInt($('input1').value, 10);
var userInput2 = parseInt($('input2').value, 10);
var multiCalculation = userInput1 * userInput2;
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
var userInput1 = parseInt($('input1').value, 10);
var userInput2 = parseInt($('input2').value, 10);
var divCalculation = userInput1 / userInput2;
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label>1st Number</label><input id="input1"><br><br>
<label>2nd Number</label><input id="input2"><br><br>
<button id="multiply">Multiply</button>
<button id="divide">divide</button><br><br>
<label>Result is</label> <input id="resultOutput">
这可能有效。
var $ = function (id) {
"use strict";
return document.getElementById(id);
};
function doTheMultiCalc() {
"use strict";
var multiCalculation = parseInt($('input1').value, 10) * parseInt($('input2').value, 10);
//TO TEST
$('resultOutput').value = multiCalculation;
}
function doTheDivCalc() {
"use strict";
var divCalculation = parseInt($('input1').value, 10) / parseInt($('input2').value, 10);
//TO TEST
$('resultOutput').value = divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label>1st Number</label><input id = "input1"><br><br>
<label>2nd Number</label><input id = "input2"><br><br>
<button id = "multiply">Multiply</button>
<button id = "divide">divide</button><br><br>
<label>Result is</label> <input id = "resultOutput">
我昨天为您的 app.js 找到了解决方案,但我失去了互联网,无法回复
另一种解决方案是创建一个函数 getInput(),这样您就可以测试该值是否为数字...不为空等...:
var $ = function (id) {
"use strict";
return window.document.getElementById(id);
};
function getInput(){
userInput1 = parseInt($('input1').value, 10);
userInput2 = parseInt($('input2').value, 10);
}
//TO TEST
function doTheMultiCalc() {
"use strict";
getInput();
var multiCalculation = userInput1 * userInput2;
//TO TEST
console.log(typeof (multiCalculation));
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
getInput();
var divCalculation = userInput1 / userInput2;
//TO TEST
console.log(typeof (divCalculation));
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
document.addEventListener('DOMContentLoaded', init);
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>oLogin</title>
<link rel="stylesheet" href="../css/reset.css">
<!-- Font -->
<link rel="stylesheet" href="../css/style.css">
</head>
<body>
<label>1st Number</label><input id ="input1"><br><br>
<label>2nd Number</label><input id ="input2"><br><br>
<button id ="multiply">Multiply</button>
<button id ="divide">divide</button><br><br>
<label>Result is</label> <input id ="resultOutput">
</div>
<script src="../js/app.js"></script>
</body>
</html>
我正在尝试对两个数字进行简单计算,让用户可以将它们相乘或相除。我知道还有其他方法可以用更少的代码来做到这一点,但我想弄清楚为什么我的结果框显示 NaN。我已经测试以确保 userInput1 和 userInput2 变量确实都是数字,但看起来其他函数内部发生了某些事情以使其成为 NaN。`
/*eslint-env browser*/
var $ = function(id) {
"use strict";
return window.document.getElementById(id);
};
var userInput1 = parseInt($('input1'), 10);
var userInput2 = parseInt($('input2'), 10);
//TO TEST
console.log(typeof userInput1);
console.log(typeof userInput2);
function doTheMultiCalc() {
"use strict";
var multiCalculation = userInput1 * userInput2;
//TO TEST
console.log(typeof(multiCalculation));
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
var divCalculation = userInput1 / userInput2;
//TO TEST
console.log(typeof(divCalculation));
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label for="input1">1st Number</label><input id="input1"><br>
<label for="input2">2nd Number</label><input id="input2"><br>
<button id="multiply" type="button">Multiply</button>
<button id="divide" type="button">divide</button><br>
<label for="resultOutput">Result is</label> <input id="resultOutput">
`
我赞扬你试图解决这个问题。所以我看到了两个问题。
首先,您实际上并没有获得输入的值。您需要使用 $('input1').value
来检索输入的实际值。
您还需要在执行每个操作之前获取该值。在这里您可以看到它的实际效果:
/*eslint-env browser*/
var $ = function(id) {
"use strict";
return window.document.getElementById(id);
};
function doTheMultiCalc() {
"use strict";
var userInput1 = parseInt($('input1').value, 10);
var userInput2 = parseInt($('input2').value, 10);
var multiCalculation = userInput1 * userInput2;
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
var userInput1 = parseInt($('input1').value, 10);
var userInput2 = parseInt($('input2').value, 10);
var divCalculation = userInput1 / userInput2;
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label>1st Number</label><input id="input1"><br><br>
<label>2nd Number</label><input id="input2"><br><br>
<button id="multiply">Multiply</button>
<button id="divide">divide</button><br><br>
<label>Result is</label> <input id="resultOutput">
这可能有效。
var $ = function (id) {
"use strict";
return document.getElementById(id);
};
function doTheMultiCalc() {
"use strict";
var multiCalculation = parseInt($('input1').value, 10) * parseInt($('input2').value, 10);
//TO TEST
$('resultOutput').value = multiCalculation;
}
function doTheDivCalc() {
"use strict";
var divCalculation = parseInt($('input1').value, 10) / parseInt($('input2').value, 10);
//TO TEST
$('resultOutput').value = divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
window.addEventListener('load', init);
<label>1st Number</label><input id = "input1"><br><br>
<label>2nd Number</label><input id = "input2"><br><br>
<button id = "multiply">Multiply</button>
<button id = "divide">divide</button><br><br>
<label>Result is</label> <input id = "resultOutput">
我昨天为您的 app.js 找到了解决方案,但我失去了互联网,无法回复
另一种解决方案是创建一个函数 getInput(),这样您就可以测试该值是否为数字...不为空等...:
var $ = function (id) {
"use strict";
return window.document.getElementById(id);
};
function getInput(){
userInput1 = parseInt($('input1').value, 10);
userInput2 = parseInt($('input2').value, 10);
}
//TO TEST
function doTheMultiCalc() {
"use strict";
getInput();
var multiCalculation = userInput1 * userInput2;
//TO TEST
console.log(typeof (multiCalculation));
$('resultOutput').value = multiCalculation;
return multiCalculation;
}
function doTheDivCalc() {
"use strict";
getInput();
var divCalculation = userInput1 / userInput2;
//TO TEST
console.log(typeof (divCalculation));
$('resultOutput').value = divCalculation;
return divCalculation;
}
//Event Handler Function
function init() {
"use strict";
$('multiply').addEventListener('click', doTheMultiCalc);
$('divide').addEventListener('click', doTheDivCalc);
}
document.addEventListener('DOMContentLoaded', init);
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>oLogin</title>
<link rel="stylesheet" href="../css/reset.css">
<!-- Font -->
<link rel="stylesheet" href="../css/style.css">
</head>
<body>
<label>1st Number</label><input id ="input1"><br><br>
<label>2nd Number</label><input id ="input2"><br><br>
<button id ="multiply">Multiply</button>
<button id ="divide">divide</button><br><br>
<label>Result is</label> <input id ="resultOutput">
</div>
<script src="../js/app.js"></script>
</body>
</html>