0

私は、3つの入力と1つの出力を持つ単純な計算機を設計しています。

使用される入力フィールド(*)に基づいて、出力要素が「使用する」式を変更できるかどうか疑問に思います。

たとえば、ツリー入力があります:入力A、入力B、入力C

  • AとBが使用されている場合(およびCが空の場合)、出力の式は「A+B」である必要があります。
  • AとCが使用されている場合(およびBが空の場合)、出力の式は「A*C」である必要があります。
  • BとCが使用されている場合(およびAが空の場合)、出力の式は「B/C」である必要があります。

では、使用された入力に基づいて、出力要素に使用される式をどのように変更できますか?

これは単純化された例です、私はあなたがポイントを得ることを望みます:-)

リクエストに応じて、ここにいくつかのサンプルコードがあります

[code]
    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta charset="UTF-8"></meta>
    <script>
    function Test(){
    <!--alert('Formula change!');-->

    if (input_a.valueAsNumber && input_b.valueAsNumber){
    alert('Formula One');
    o.value=input_a.valueAsNumber+input_b.valueAsNumber;
    }

    if (input_b.value && input_c.value){
    alert('Formula Two');
    o.value=input_a.valueAsNumber*input_c.valueAsNumber;
    }

    if (input_a.value && input_c.value){
    alert('Formula Three');
    o.value=input_b.valueAsNumber/input_c.valueAsNumber;
    }
    }
    </script>
    <style>
    </style>
    <title>Example</title>
    </head>
    <body onload="">
    <form onsubmit="return false" oninput="
    Test();
    <!--o.value=input_a.valueAsNumber+input_b.valueAsNumber;-->
    ">

    <input name="input_a" id="input_a" type="number" step="any" value="" placeholder="Input A"></br>
    <input name="input_b" id="input_b" type="number" step="any" value="" placeholder="Input B"></br>
    <input name="input_c" id="input_c" type="number" step="any" value="" placeholder="Input C"></br>
    </br>
    <output name="o" for="a b c"></output>

    </form>
    </body>
[/code]

(*)別の可能性は、複数の出力を持つことですが、(入力に基づいて)関連性のないものを非表示にすることです...しかし、どうすればよいですか?

4

1 に答える 1

0

Eval関数を使用して動作させました

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8"></meta>
<script>
function SelectFormula(){
if (input_a.valueAsNumber && input_b.valueAsNumber){
return "input_a.valueAsNumber+input_b.valueAsNumber";
} else if (input_b.value && input_c.value){
return "input_b.valueAsNumber*input_c.valueAsNumber";
} else if (input_a.value && input_c.value){
return "input_a.valueAsNumber/input_c.valueAsNumber";
}
}
</script>
<style>
</style>
<title>Example</title>
</head>
<body onload="">
<form onsubmit="return false" oninput="
o.value=eval(SelectFormula());
">
Input A: <input name="input_a" id="input_a" type="number" step="any" value="" placeholder="Input A"></br>
Input B: <input name="input_b" id="input_b" type="number" step="any" value="" placeholder="Input B"></br>
Input C: <input name="input_c" id="input_c" type="number" step="any" value="" placeholder="Input C"></br>
</br>
Output: <output name="o" for="a b c"></output>
</form>
</body>

私はEval関数を使用しませんが、関数に直接o.value=...を設定しても機能しません:-(

于 2013-03-27T14:06:37.803 に答える