0

私は JavaScript を初めて使用し、フォームに複数の値を返すのに問題があります。これが私のコードです:

フォーム:

<form name="form1">

First option
<input type="text" size="20" name="OptA" rows="1">

Second option
<input type="text" size="20" name="OptB" rows="1">

<input type="button" name="calc" value="Calculate" onclick="Evaluate(document.form1.OptA, document.form1.OptB, document.form1.TheStr);">

<input type="text" size="5" name="TheStr" readonly><input type="text" size="5" name="TheSte" readonly>

</form>

スクリプト:

function Evaluate(OptA, OptB, TheStr)
{       
    var A_Count = 0;
    var B_Count = 0;
    var C_Count = 0;
    var D_Count = 0;
    var Str1 = 0;
    var Str2 = "";
    var Str3 = 0;
    var Str4 = "";
    var Char1 = "";
    var Char2 = "";
    var Char3 = "";
    var Char4 = "";
    var Total = 0;
    var TheOptions = OptA.value + OptB.value;
    var A1 = "";
        TheStr.value = "";
        TheOptions = TheOptions.toUpperCase();
        for (var i = 0; i < TheOptions.length; i++)
        {
                if (TheOptions.charAt(i) == 'A')
                {       A_Count++;      }
                else if (TheOptions.charAt(i) == 'B')
                {       B_Count++;      }
        }
        Str1 = "" + A_Count+B_Count;
        Str2 = "";
        while ((Str1.length > 2) & (Count < 20))
        {
                Str2 = "";
                for (var i = 0; i < Str1.length - 1; i++)
                {
                        Char2 = Str1.charAt(eval(i+1));
                        Str2 = Str2 + (parseInt(Str1.charAt(i)) + parseInt(Str1.charAt(eval(i+1))));
                }
                Count++;
                Str1 = Str2;
        }
        if (Count > 19)
        {
                TheStr.value = '0%';
        }
        else
        {
                TheStr.value = parseInt(Str2,10) + '%';
        }

    for (var i = 0; i < TheOptions.length; i++)
        {
                if (TheOptions.charAt(i) == 'C')
                {       C_Count++;      }
                else if (TheOptions.charAt(i) == 'D')
                {       D_Count++;      }
        }
        Str3 = "" + C_Count+D_Count;
        Str4 = "";
        while ((Str3.length > 2) & (Count < 20))
        {
                Str4 = "";
                for (var i = 0; i < Str3.length - 1; i++)
                {
                        Char4 = Str3.charAt(eval(i+1));
                        Str4 = Str4 + (parseInt(Str3.charAt(i)) + parseInt(Str3.charAt(eval(i+1))));
                }
                Count++;
                Str3 = Str4;
        }
        if (Count > 19)
        {
                TheSte.value = '0%';
        }
        else
        {
                TheSte.value = parseInt(Str2,10) + '%';
        }

    TheStr=(TheStr.value, TheSte.value)

}

何らかの理由で、最初の入力ボックスに値を返すだけで、2 番目の入力ボックスは空白のままです。私の問題は、複数の値を返す方法と、それを 2 つの入力ボックスに解析する方法を理解することだと思います。助言がありますか?

4

1 に答える 1

1

両方の入力には「TheStr」という名前が付けられています。私が正しく理解している場合は、2番目の入力に「TheSte」という名前を付け、Evaluate関数で宣言する必要があります。

編集:また、最後の指示

TheStr=(TheStr.value, TheSte.value)

効果はありません。関数では、TheStrはテキスト入力です。valueプロパティを設定して値を変更します

于 2013-01-06T20:24:55.827 に答える