1

我试图从“f2”中减去“f1”的值,它工作正常。但是我只想要一次,但是当我单击提交更多按钮时,它每次从 f2 中减小 f1 的值。怎么可能只做一次。当我输入值而不是从脚本调用它时,它运行良好。

    <form name=bills>

<p><input type="text" name="f1" size="20">
<input type="text" name="f2" size="20" value="30"></p>
    <input type="button" value="Submit" onclick="cbs(this.form)" name="B1">

    <Script>
    function cbs(form)

    {
        form.f2.value = (([document.bills.f2.value] * 1) - (document.bills.f1.value * 1))
    }

请帮忙

4

4 回答 4

1

JavaScript 中数学函数的绝对值是 Math.abs();

Math.abs(6-10) = 4;
于 2013-03-25T17:35:47.963 回答
1

不确定您到底要做什么,但要计算绝对值 use Math.abs()

于 2013-03-25T17:36:03.047 回答
0

如果您希望该功能仅工作一次,则可以使用以下内容:

hasBeenRun = false; //have this variable outside the function

if(!hasBeenRun) {
    hasBeenRun = true;
    //Run your code
}
于 2013-03-25T17:38:21.427 回答
0

您的问题似乎是在问如何只从 f2 中减去 f1 一次,无论单击提交按钮多少次。一种方法是使用一个变量来跟踪函数是否已被调用,如果已调用则不进行计算。至于提到绝对值的标题,这被称为Math.abs(value)

<Script>
var alreadyDone = false;
function cbs(form)
{
    if (alreadyDone) return;
    // this one takes the absolute value of each value and subtracts them
    form.f2.value = (Math.abs(document.bills.f2.value) - Math.abs(document.bills.f1.value));

    // this one takes the absolute value of the result of subtracting the two
    form.f2.value = (Math.abs(document.bills.f2.value - document.bills.f1.value));
    alreadyDone = true;
}

为了使函数在 f1 的值发生变化时能够再​​次工作,只需alreadyDone在 f1 变化时将变量改回 false

<input type="text" name="f1" onChange="alreadyDone=false;" size="20">
于 2013-03-25T17:39:11.203 回答