我希望此函数添加从表单输入的两个值,但不是添加值,而是合并数字。如果我输入2和2它是22,而我想要4输出。我认为for循环不是wotking
<script>
var calculate = function(){
var input = document.getElementsByTagName("input");
var length = input.length;
for (var i = 0; i < length; i++) {
input[i] = input[i].value;
input[i] = parseInt(input[i]);
}
var total_living_room = input[0] + input[1];
document.getElementById("sh").innerHTML=total_living_room;
}
</script>
答案 0 :(得分:5)
问题是,getElementsByTagName()
返回一个NodeList而没有数组(参见,例如,MDN on this)。
两者在许多方面表现相似,但NodeList的元素不能像你那样改变。
作为解决方案,您将值解析为第二个数组并使用:
<script>
var calculate = function(){
var input = document.getElementsByTagName("input"),
length = input.length,
inputVals = [];
for (var i = 0; i < length; i++) {
inputVals.push( parseInt( input[i].value, 10 ) );
}
var total_living_room = inputVals[0] + inputVals[1];
document.getElementById("sh").innerHTML=total_living_room;
}
</script>
修改强>
答案 1 :(得分:1)
为什么要尝试使用它携带的值覆盖数组中的输入dom元素?改为:
var cache = [];
for (var i = 0; i < length; i++) {
cache.push(parseInt(input[i].value, 10));
}
答案 2 :(得分:0)
在您的代码中input[0]
和input[1]
仍然是元素,您必须添加其值,如下所示
parseInt(input[0].value) + parseInt(input[1].value)