输入javascript的总和不能超过9
我的脚本中有一个小问题,我无法获得超过9个输入的总和 最多9个可以正常工作,但如果添加新的输入字段,则会停止工作 Div whit输入和按钮:输入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"
<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可能更加灵活:。