Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用普通Javascript进行计算_Javascript - Fatal编程技术网

用普通Javascript进行计算

用普通Javascript进行计算,javascript,Javascript,多年来,我一直在学习堆栈溢出,但这是我的第一个问题。 我尝试用java脚本构建一个价格计算器。 其思想是选择一个许可证模型(选择器),然后使用一个基本价格(通过输入字段),选择一个具有多因子链接的用户量词(通过输入字段)。最后,基本价格将相乘,并显示最终价格。 我很满意,数学部分是正确的,但一定有语法错误,我驳回。我希望这是一个有价值的问题,因为我有一段时间被这个问题困住了 如果有人对此有意见,那就太好了,谢谢 以下是我的想法: //从inputfiels获取输入 var license=


多年来,我一直在学习堆栈溢出,但这是我的第一个问题。
我尝试用java脚本构建一个价格计算器。

其思想是选择一个许可证模型(选择器),然后使用一个基本价格(通过输入字段),选择一个具有多因子链接的用户量词(通过输入字段)。最后,基本价格将相乘,并显示最终价格。

我很满意,数学部分是正确的,但一定有语法错误,我驳回。我希望这是一个有价值的问题,因为我有一段时间被这个问题困住了

如果有人对此有意见,那就太好了,谢谢

以下是我的想法:

//从inputfiels获取输入
var license=parseInt(document.getElementById(“license”).value);
var Quantity=parseInt(document.getElementById(“数量”).value);
var Basis=parseInt(document.getElementById(“Basis”).value);
//桌面用户号码
var User=[3,8,16,36,50];
//网络视图编号
var视图=[20,50,80,200,500];
//链接倍增系数(例如,16个用户=倍增系数x 3,或50个视图=倍增系数x 2)
var乘法=[1,2,3,4,5];
//计算桌面
功能桌面_内核(数量、基础){
var指数;
for(乘法索引){
如果(用户[索引-1]==数量){
返回基准*乘以[指数-1];
}
}
}
//计算网
函数Web_内核(数量、基础){
var指数;
for(乘法索引){
if(查看[索引-1]==数量){
返回基准*乘以[指数-1];
}
}
}
//许可证模式:桌面或Web
功能许可证\u选择器(){
如果(许可证==1){
var价格=桌面内核(数量、基础);
}否则,如果(许可证==2){
var价格=网络内核(数量、基础);
}
document.getElementById(“价格”).value=价格;
}
//显示输出
document.getElementById(“Price”).value=Desktop\u内核(数量、基础);

桌面
网状物
  • 您需要读取计算函数中的输入
  • 不需要有两个只改变一个变量的内核函数;而是将该列表作为参数传入
  • 我不确定你的计算是否正确;如果数量未在用户/视图数组中列出,则它将始终返回未定义的
    。应该是
    =
    而不是
    ==
    ,以拥有一个分层系统吗?(我这样更正了它,不确定这是否是你的意思。)
//桌面用户编号
var User=[3,8,16,36,50];
//网络视图编号
var视图=[20,50,80,200,500];
//链接倍增系数(例如,16个用户=倍增系数x 3,或50个视图=倍增系数x 2)
var乘法=[1,2,3,4,5];
函数核(数、量、基){
var指数;
for(乘法索引){
if(数字[索引-1]>=数量){
返回基准*乘以[指数-1];
}
}
}
//许可证模式:桌面或Web
函数重新计算(){
//从inputfields获取输入
var license=parseInt(document.getElementById(“license”).value);
var Quantity=parseInt(document.getElementById(“数量”).value);
var Basis=parseInt(document.getElementById(“Basis”).value);
变量编号=(许可证==1?用户:视图);
var价格=内核(数量、数量、基础);
document.getElementById(“价格”).value=价格;
}

桌面
网状物

第一项工作是正确缩进代码。帮助您维护它,并帮助我们阅读和理解您的问题。@Utkanos我冒昧地用Prettier重新格式化了OP的代码,因此这不再是一个问题。您不应该在页面加载时读取输入值,但在处理单击事件时。我建议构建一个更组合的数据结构,拥有三个必须保持相同顺序的独立阵列通常会在以后给您带来问题。您可以有一个包含三个属性的对象数组。您已经声明并为
许可证
和其他全局级别的对象赋值。因为它将在加载脚本时进行计算,然后不会得到更新。因此,您将始终获得
许可证=''
。使用
parseInt(document.getElementById(“license”).value)
无论您在哪里使用
license
,与其他
变量类似。在内核函数中不应该考虑数量吗?