Javascript 从函数向窗体返回多个值

Javascript 从函数向窗体返回多个值,javascript,forms,Javascript,Forms,我是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" v

我是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)

}
功能评估(OptA、OptB、TheStr)
{       
var A_计数=0;
var B_计数=0;
var C_计数=0;
var D_计数=0;
var-Str1=0;
var Str2=“”;
var-Str3=0;
var Str4=“”;
var Char1=“”;
var Char2=“”;
var Char3=“”;
var Char4=“”;
var合计=0;
var TheOptions=OptA.value+OptB.value;
var A1=“”;
TheStr.value=“”;
TheOptions=TheOptions.toUpperCase();
对于(变量i=0;i2)和(Count<20))
{
Str2=“”;
对于(变量i=0;i19)
{
tr.value='0%';
}
其他的
{
tr.value=parseInt(Str2,10)+'%';
}
对于(变量i=0;i2)和(Count<20))
{
Str4=“”;
对于(变量i=0;i19)
{
测试值='0%';
}
其他的
{
TheSte.value=parseInt(Str2,10)+'%';
}
TheStr=(TheStr.value,TheSte.value)
}
出于某种原因,它只向第一个输入框返回一个值,而第二个输入框保持空白。我想我的问题是如何返回多个值,然后如何将其解析到两个输入框中。有什么建议吗?

两个输入都被命名为“TheStr”。如果我理解正确,您需要将第二个输入命名为“TheSte”,并在求值函数中声明它

编辑:也是最后的指令

TheStr=(TheStr.value, TheSte.value)

没有效果。在您的函数中,STR是一个文本输入。您可以通过设置value属性来更改其值

哦,是的,对不起,输入错误,我会解决这个问题。第二个输入名为“TheSte”。如果您像其他输入一样将该输入传递给函数,它是否工作?不,它不工作。我确信这是我所缺少的一些简单的东西,当它被指出时,我会觉得自己是个十足的傻瓜。这是因为代码没有运行,计数是未定义的。检查错误控制台,让firebug帮助您找出错误。如果定义了Count,您应该在两个输入中都得到结果。是的,结果是我缺少了“TheSte”的声明。因此脚本中的第一行应该是
函数求值(OptA,OptB,TheStr,TheSte)
并且正好在
TheStr.value=”“应该有
TheSte.value=“”TheStr=(TheStr.value,TheSte.value)
,正如您所指出的。谢谢