【问题标题】:Can a var be used twice?一个var可以使用两次吗?
【发布时间】:2013-05-28 01:26:37
【问题描述】:

我使用下面的代码来获取总材料成本并添加销售税,然后添加任何运输成本并获取总价值并将其填充到 materialtotal 字段中,它完美地工作。

我的问题是,我现在需要从materialtotal 字段中获取总数并将其添加到名为labortotal 的字段的总数中,然后填充一个名为grandtotal 的字段。

function tax(){
    var materialcost = document.getElementById( 'materialcost' ).value;
    var shipping = document.getElementById( 'shipping' ).value;
    var salestax = Math.round(((materialcost / 100) * 8.1)*100)/100;
    var materialtotal = (materialcost * 1) + (salestax * 1) + (shipping * 1);

    document.getElementById( 'materialcost' ).value = materialcost; 
    document.getElementById( 'salestax' ).value = salestax;
    document.getElementById( 'shipping' ).value = shipping;
    document.getElementById( 'materialtotal' ).value = materialtotal;
} 

我的问题是我想我可以将materialtotal 添加到var 中,例如:

function getFinal(){
    var materialtotal = document.getElementById( 'materialtotal' ).value;
    var grandtotal = document.getElementById( 'grandtotal' ).value;
    var labortotal = document.getElementById( 'labortotal' ).value;
    var grandtotatal = (labortotal * 1) + (materialtotal * 1);

    document.getElementById( 'grandtotal' ).value = grandtotal;
    document.getElementById( 'labortotal' ).value = labortotal;
    document.getElementById( 'materialtotal' ).value = materialtotal;
}

当我添加

onpropertychange="getfinal() 

到materialtotal id标签,它使浏览器锁定。

如何让materialtotallabortotal 合计并填充grandtotal 字段?

【问题讨论】:

  • n*1 == n。我不明白...无论如何,乘法的优先级高于加法,因此您不需要括号。
  • @elclanrs:对Number的隐式强制。
  • 哦,我现在明白了。以前没见过。只需+value,应该可以。
  • 不要使用onpropertychange 事件 - 每次设置输入值时都会触发它,导致无限循环
  • 为什么要更新labortotalmaterialtotal?你不会改变他们的价值观。

标签: javascript var


【解决方案1】:

materialtotal 元素的属性发生变化时,您调用的是getFinalgetFinal 计算一些数据,然后修改materialtotalvalue,然后再次调用getFinal(以此类推……)

【讨论】:

  • 修改脚本中的值不应再触发任何事件,除非他手动这样做
  • @appclay:我认为onpropertychange 事件会。
  • oninput 是更好的事件处理程序
  • onpropertychange 会在 box 的值发生变化时自动触发事件,不过它只适用于 IE!
  • @JasonMcAdams:没错,一旦检测到更改,您就会进行另一项更改,然后检测到该更改,进行另一项更改等等......这就是您的代码被锁定的原因。
猜你喜欢
  • 2018-10-27
  • 2019-10-22
  • 2022-01-21
  • 1970-01-01
  • 2015-05-29
  • 2020-11-28
  • 2017-09-13
  • 2014-06-16
  • 1970-01-01
相关资源
最近更新 更多