1

「f2」から「f1」の値を差し引こうとしていますが、うまくいきます。しかし、一度だけ欲しいのですが、[もっと送信]ボタンをクリックすると、f2からf1の値が毎回減少します。1回だけで済むなんて。スクリプトから呼び出すときではなく、値を入力するとうまく機能します。

    <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

何をしようとしているのか正確にはわかりませんが、絶対値を計算するにはMath.abs().

于 2013-03-25T17:36:03.047 に答える
0

あなたの質問は、送信ボタンが何回クリックされても、f2 から f1 を 1 回だけ減算する方法を尋ねているようです。これを行う 1 つの方法は、関数が既に呼び出されているかどうかを追跡する変数を用意し、関数が既に呼び出されている場合は計算を行わないことです。絶対値に言及しているタイトルについては、これは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 の値が変更されたときに関数が再び機能するようにするには、f1 が変更alreadyDoneされたときに変数を false に戻すだけです。

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

関数を一度だけ機能させたい場合は、次のようにすることができます。

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

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