javascript - 使用纯 Javascript 进行计算
问题描述
多年来我一直在学习堆栈溢出,但这是我的第一个问题。
我尝试用 java 脚本构建一个价格计算器。
这个想法是选择一个许可证模型(选择器),然后使用一个基本价格(通过输入字段),选择与乘法因子相关联的用户量词(通过输入字段)。最后,基本价格将相乘并显示最终价格。
我很满意数学部分是正确的,但是我必须排除语法错误。我希望这是一个有价值的问题,因为我被这个问题困住了一段时间。
如果有人对此有一些意见,那就太好了,谢谢。
以下是我的想法:
// get input from inputfiels
var Licence = parseInt(document.getElementById("Licence").value);
var Quantity = parseInt(document.getElementById("Quantity").value);
var Basis = parseInt(document.getElementById("Basis").value);
// Desktop User numbers
var User = [3, 8, 16, 36, 50];
// Web View numbers
var View = [20, 50, 80, 200, 500];
// linked multiply factor (eg. 16 users = multiply factor x 3, or 50 views = multiply factor x 2)
var Multiply = [1, 2, 3, 4, 5];
// Calcutation Desktop
function Desktop_Kernel(Quantity, Basis) {
var index;
for (index of Multiply) {
if (User[index - 1] == Quantity) {
return Basis * Multiply[index - 1];
}
}
}
// Calcutation Web
function Web_Kernel(Quantity, Basis) {
var index;
for (index of Multiply) {
if (View[index - 1] == Quantity) {
return Basis * Multiply[index - 1];
}
}
}
// Licece Model: Desktop or Web
function Licence_Selector() {
if (Licence == 1) {
var Price = Desktop_Kernel(Quantity, Basis);
} else if (Licence == 2) {
var Price = Web_Kernel(Quantity, Basis);
}
document.getElementById("Price").value = Price;
}
// show output
document.getElementById("Price").value = Desktop_Kernel(Quantity, Basis);
<select id="Licence">
<option value="1">Desktop</option>
<option value="2">Web</option>
</select>
<input type="number" id="Basis" placeholder="Basis Price" >
<input type="number" id="Quantity" placeholder="Quantity">
<input type="button" value="Display Price" onclick="Licence_Selector()">
<input type="text" id="Price">
解决方案
- 您需要读取计算函数中的输入。
- 不需要两个只改变一个变量的内核函数;而是将该列表作为参数传递。
- 我不确定你的计算是否正确;如果 Quantity 未在 User/View 数组中列出,则它将始终返回
undefined
. 是否应该>=
代替==
, 来拥有一个层级系统?(我这样更正了,不知道你是不是这个意思。)
// Desktop User numbers
var User = [3, 8, 16, 36, 50];
// Web View numbers
var View = [20, 50, 80, 200, 500];
// linked multiply factor (eg. 16 users = multiply factor x 3, or 50 views = multiply factor x 2)
var Multiply = [1, 2, 3, 4, 5];
function Kernel(Numbers, Quantity, Basis) {
var index;
for (index of Multiply) {
if (Numbers[index - 1] >= Quantity) {
return Basis * Multiply[index - 1];
}
}
}
// Licece Model: Desktop or Web
function Recalculate() {
// get input from inputfields
var Licence = parseInt(document.getElementById("Licence").value);
var Quantity = parseInt(document.getElementById("Quantity").value);
var Basis = parseInt(document.getElementById("Basis").value);
var Numbers = (Licence == 1 ? User : View);
var Price = Kernel(Numbers, Quantity, Basis);
document.getElementById("Price").value = Price;
}
<select id="Licence" value="1">
<option value="1">Desktop</option>
<option value="2">Web</option>
</select>
<input type="number" id="Basis" placeholder="Basis Price" >
<input type="number" id="Quantity" placeholder="Quantity">
<input type="button" value="Display Price" onclick="Recalculate()">
<input type="text" id="Price">
推荐阅读
- reactjs - 查看 react-bootstrap 导航栏是否折叠
- r - 多个李克特图的 for 循环返回 NOTHING
- javascript - 如何使用柯里化功能删除事件侦听器
- firebase - Firebase 我无法删除帐户
- content-management-system - 如何使健全的 io 数组选择为多选?
- mapbox-gl-js - mapboxgl.Marker 如何删除
- swift - 斯威夫特 4.2/5。获取分配给字典中此键的数组中数字的“键”
- python - 在尝试在没有 sudo 权限的服务器上安装 virtualenv 时,我得到:`TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'`
- javascript - JSLint 和使用三元表达式赋值
- linux - 试图在lua中打印一张表