输入javascript的总和不能超过9

输入javascript的总和不能超过9,javascript,Javascript,我的脚本中有一个小问题,我无法获得超过9个输入的总和 最多9个可以正常工作,但如果添加新的输入字段,则会停止工作 Div whit输入和按钮: <div id="valuesContainer"> <input type="text" id="value01" /> <input type="text" id="value02" /> <input type="text" id="value03" /> <input type="text"

我的脚本中有一个小问题,我无法获得超过9个输入的总和

最多9个可以正常工作,但如果添加新的输入字段,则会停止工作

Div whit输入和按钮:

<div id="valuesContainer">
<input type="text" id="value01" />
<input type="text" id="value02" />
<input type="text" id="value03" />
<input type="text" id="value04" />
<input type="text" id="value05" />
<input type="text" id="value06" />
<input type="text" id="value07" />
<input type="text" id="value08" />
<input type="text" id="value09" />

</div>
<input type="button" value="Add Value" id="addMore" onclick="addInput();" />
<input type="button" value="Calculate Total" onclick="getTotal();" />
<div id="total"></div>
Javascript使用函数进行求和,以添加新的输入字段

    <script type="text/javascript">
var max = 9;

function getValues(id){
    var result = document.getElementById(id).value;
    return (result ? result : 0);
}

function addInput(){
    max++;
    var input = '<input type="text" id="value'+ max +'" />';
    document.getElementById("valuesContainer").innerHTML += input;
}

function getTotal(){
    var sum = 0;
    for(var i=1; i <= max; i++){
        sum = sum + parseFloat(getValues("value0" + i));
    }
    document.getElementById("total").innerHTML = sum;
}
    </script>

请注意,在您的代码中,您在中的索引之前显式添加了value0:

sum = sum + parseFloat(getValues("value0" + i));
使用该代码,您的第十个索引应该是value010

只有当索引小于10时,才可以在0前加前缀:

if (i < 10)
   sum = sum + parseFloat(getValues("value0" + i)); 
else
   sum = sum + parseFloat(getValues("value" + i));
然后你可以使用value10作为第十个索引,这可能是你最初想要的


您可以为更多或其他情况做类似的工作。对于更通用的解决方案,您可以使用函数来

如何命名它们

我猜您使用的是value10,但是getValues的代码将i附加到value0。我敢打赌,如果你使用value010,它会工作的

如果下一个值必须为值10,则有两个选择:

一,。将value01到value09重命名为value1到value9

二,。仅当i<10时才追加0:

for(var i=1; i <= max; i++){
     parseFloat(getValues("value" + ((i<10)? "0" + i : i)));
}
你的密码是

getValues("value0" + i)
因此,对于i>9的值,它将查找ID value010等。因此,如果您的其他输入具有如下ID

<input type="text" id="value10" />

然后value010将与value10不匹配,您将找不到您要查找的内容。

好吧,事实上,下一个需要是value10而不是value010,也许我可以从01或1开始获得10多个,唯一的问题是我需要预加载9个输入字段。谢谢谢洛·约翰,我无法理解你的解决方案。谢谢allot@NeoCastelli你还不明白什么?新的getValues调用使用一个操作符,它基本上只是一个内联if语句{var sum=0;forvar i=1;i@NeoCastelli我漏掉了一个括号,请用更新后的答案尝试一下。这真的不值得成为它自己的问题,你应该澄清你自己的问题。此外,你不能问关于Stackoverflow的问题,作为学习实际材料的替代。这不会让你走多远。但为了帮助你:你为什么要使用ID?getE从长远来看,lementsByTagName可能更加灵活:。