我有代码,可以用来减去文本框值使用javascript?
我有一些代码,可以使用javascript进行减法和附加文本框值,但问题是每当我有代码,可以用来减去文本框值使用javascript?,javascript,html,subtraction,Javascript,Html,Subtraction,我有一些代码,可以使用javascript进行减法和附加文本框值,但问题是每当onfocus textbox时,javascript会一次又一次地执行函数,我只希望javascript执行一次函数 javascript函数一次又一次附加onMouseOver=“return B(0);” javascript函数一次又一次地执行减法onfocus=“return C();” javascript函数一次又一次附加onfocus=“return D();” 函数getObj(objID){ 返回文
onfocus textbox
时,javascript会一次又一次地执行函数,我只希望javascript执行一次函数
javascript函数一次又一次附加onMouseOver=“return B(0);”
javascript函数一次又一次地执行减法onfocus=“return C();”
javascript函数一次又一次附加onfocus=“return D();”
函数getObj(objID){
返回文档.getElementById(objID);
}
函数B(){
var advanceBox=document.getElementById('advance');
var originalValue=advanceBox.value;
advanceBox.onfocus=函数(){
this.value=parseFloat(原始值,10)+
parseFloat(document.getElementById('recamt')。值,10);
返回false;
};
}
函数C(){
getObj(“余额”).value=parseFloat(getObj(“总计”).value | | 0)-
(parseFloat(getObj(“advance”).value | | 0);
getObj(“余额”).value=parseFloat(getObj(“余额”).value | | 0)-
(浮动(getObj(“折扣”).value)| | 0);
返回false;
}
函数D(){
getObj(“total”).value=parseFloat(getObj(“total”).value | | 0)+
(parseFloat(getObj(“openbal”).value | | 0));
返回false;
}
期初余额:总计:
预付款:
余额:
Rem金额:
折扣:
您可以使用一个或多个标志: 在页面的开头:
<script>
var flag = false;
</script>
var标志=假;
关于你的元素:
<div .... onMouseOver="if(!flag) { flag = true; return B(0);}" > .... </div>
。。。。
onFocus也一样…您可以:
var executedAlready = false;
a内部功能B和C具有:
if(executedAlready != true){ executedAlready = true; }
else { return; }
或者您可以将事件拆离?我想有几种不同的方法可以做到这一点。其他答案告诉您,获得结果的“最快”方法是使函数只执行一次。 您可以这样做:
- 制作一个标志(只是一个知道函数是否已经被触发的变量)
- 执行函数时,首先检查此标志
这不是最好的方法-设置全局对象和其他东西并不好,但是因为您可能没有任何附带的库,所以现在它将帮助您解决问题。对于长期解决方案,您应该使用一个事件库(如),并让它为您处理连接和分离onfocus事件的操作。您可以编写示例javascript吗,因为我对您的回答感到困惑谢谢您的帮助,我还有其他问题要问您
if(executedAlready != true){ executedAlready = true; }
else { return; }
// 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;
};