从输入类型号递增而不是递减值

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 变量,您将获得所需的值

以上是关于从输入类型号递增而不是递减值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript递增和递减运算符

重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符

向 html 输入元素添加默认值会冻结递增/递减功能

PHP的自增自减操作

Swift 投票系统递增和递减 2 而不是 1

shared_ptrs 是不是由于引用计数器原子递增/递减而遇到缓存未命中?