从输入类型号递增而不是递减值
Posted
技术标签:
【中文标题】从输入类型号递增而不是递减值【英文标题】:Incrementing instead of decrementing the value from input type number 【发布时间】:2020-10-05 20:30:11 【问题描述】:Onclick wordcount 输入类型编号(增量和减量)应在 Total Cost 处显示值。
Onclick quantity 输入类型编号(增量和减量)应从 Total Cost 中获取值并计算显示在 Total Cost 处的值。
<input class="form-control" type="number" id="wordcount" onchange="calTotal();" name="wordcount" value="" min="1" max="100000000000" id="wordcount" >
<input class="form-control" type="number" id="quantity" onchange="calTotal();" name="quantity" value="" min="1" max="100000000000">
在此处显示结果:
<input type="number" readonly="readonly" min="1n" name="total" id="running-summary-total" value="0.00">
enter image description here
javascript 进行计算:
<script>
function calTotal()
var z = document.getElementById("wordcount").value;
console.log(z)
if (document.getElementById("wordcount").value)
var wc = z * 0.098;
document.getElementById("running-summary-total").value = +wc;
if (document.getElementById("quantity").value)
var r = document.getElementById("running-summary-total").value
var wc = r * 2;
document.getElementById("running-summary-total").value = +wc;
</script>
我对 wordcount
函数没有任何问题,但我有
当我减少 document.getElementById("quantity").value
中的值时出现数量问题,它是增加它而不是减少 2。
【问题讨论】:
但你不应该只做var wc = r - 2;
吗?
我应该把这个var wc = r - 2;
放在哪里?
在getElementById("quantity").value
if 内
请参考上图,以便您了解我的问题
现在它增加了 2,因为您在代码中设置了 var wc = r * 2;
this。但是您希望 E
的值替换该代码中的 2 吗?它应该做什么计算?它是抓住D
并除以E
还是减少E
?
【参考方案1】:
根据 cmets 并提供了解释。我想这就是你要找的东西:
function calTotal()
let wordcount = $("#wordcount").val();//get wordcount value
let quantity = $("#quantity").val();//get quantity value
if(wordcount)//if wordcount has value
var wc = wordcount * 0.098;
$("#running-summary-total").val(wc);
if(quantity && quantity < 0)//if quantity has value and its smaller then 0 (negative value)
let oldtotal = $("#running-summary-total").val();//getting the old total value
let calc = Math.abs(quantity) * 2;//added Math.abs to turn negative number into positive, and mulitply by 2
let newtotal = oldtotal / calc;// here we divide the old total by the quatity times 2
$("#running-summary-total").val(newtotal);
if(quantity && quantity > 0)//if quantity has value and its bigger then 0 (positive value)
let oldtotal = $("#running-summary-total").val();//getting the old total value
let calc = quantity * 2;//here we multiply quantity by 2
let newtotal = oldtotal * calc;// here we multiply the old total by the quantity times 2
$("#running-summary-total").val(newtotal);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="form-control" type="number" id="wordcount" onchange="calTotal();" name="wordcount" value="" min="1" max="100000000000">
<input class="form-control" type="number" id="quantity" onchange="calTotal();" name="quantity" value="" min="" max="100000000000">
<input type="number" readonly="readonly" min="1n" name="total" id="running-summary-total" value="0.00">
我已经把它改写成 jquery 代码(我的纯 javascript 不是很好)
edit增加了对负值的支持,并为正值添加了乘法(起初是除法)。
【讨论】:
点击 quantity 向上箭头将其除而不是相乘 @ramon-de-vries 非常感谢,你真的帮了大忙!我点击了谢谢按钮 @Ramon de Vries,我很感谢你的帮助,还有一个帮助,有没有办法将 C 中定义的值传递给然后增加 D 等等。换句话说,当您增加或减少 D 时,它将从 C 中的旧值开始增加【参考方案2】:您的代码当前正在获取 total 的值并将它们乘以 2 不考虑数量输入的值或字数的值。
function calTotal()
var wordCount = document.getElementById("wordcount").value;
let quantity = document.getElementById("quantity").value;
document.getElementById("running-summary-total").value = wordCount * quantity
【讨论】:
这段代码还在增加,这不是 OP 要求的 我已经更新了我理解的 OP 正在寻找的简化版本, 我需要在 onchange 数量E
时将总成本 C
除以 2,并且在 onchange 数量 @ 时将总成本 C
的值乘以 2 987654325@
您上面提供的不计入总成本C
然后您可以将最后一个金额乘以 costPerWord
变量,您将获得所需的值以上是关于从输入类型号递增而不是递减值的主要内容,如果未能解决你的问题,请参考以下文章
重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符