我有可用于使用javascript减去文本框值的代码?

时间:2013-03-27 12:29:42

标签: javascript html subtraction

我的代码可以用于减法和使用javascript的其他文本框值,它正在工作,但问题是javascript一次又一次地执行函数onfocus textbox我只想要一次javascript应该是{{1} }?

javascript函数一次又一次executed function

javascript函数一次又一次减法onMouseOver="return B(0);"

javascript函数一次又一次onfocus="return C();"

onfocus="return D();"

3 个答案:

答案 0 :(得分:1)

你可以:

var executedAlready = false;

内部函数B和C具有:

if(executedAlready != true){ executedAlready = true; }
else { return; }

或许您可以分离事件?我想有几种不同的方法可以做到这一点。

答案 1 :(得分:0)

您可以使用一个或多个标志:

在页面的开头:

<script>
    var flag = false;
</script>

并在您的元素上:

<div .... onMouseOver="if(!flag) { flag = true; return B(0);}" > .... </div>

onFocus ...

答案 2 :(得分:0)

其他答案告诉您,获得结果的“最快”方法是让您的函数只执行一次。 你可以这样做:

  • 制作一个标志(只是一个知道你的功能是否已被触发的变量)。
  • 执行功能时,请先检查此标志。

以下是如何使用函数B()执行此操作的示例:

注意:我没有改变你的功能,现在不想进入那个)

// setup fired as false
var hasBFired = false;
function B(){
  // if B is true, we do nothing
  if (hasBFired) {
    return;
  // else if it is not true, basically only the first time you call this, flip the flag and execute the rest of the code.
  } else {
    hasBFired = true;
  }
  var advanceBox = document.getElementById('advance');
  var originalValue = advanceBox.value;
  advanceBox.onfocus = function() {
  this.value = parseFloat(originalValue, 10) +
  parseFloat(document.getElementById('recamt').value, 10);
  return false;
};

现在,对C和D函数重复相同的操作(再设置两个标志)。

这不是最好的方法 - 设置全局对象和东西并不好,但由于你可能没有获得任何副库,它现在可以帮助你解决问题。对于长期解决方案,您应该使用事件库(如YUI Event)并让它处理为onfocus事件附加和分离操作。