1

我希望这个函数添加从表单输入的两个值,而不是添加它合并数字的值。如果我输入 2 和 2 它是 22,而我希望输出 4。我认为 for 循环不正常

<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>
4

3 回答 3

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>

编辑

示例小提琴

于 2013-04-18T10:19:00.860 回答
1

为什么你试图用它携带的值覆盖数组中的输入 dom 元素?改成:

var cache = [];
for (var i = 0; i < length; i++) {
    cache.push(parseInt(input[i].value, 10));
}
于 2013-04-18T10:18:52.317 回答
0

在您的代码中input[0]并且input[1]仍然是一个元素,您必须添加它的值,如下所示

parseInt(input[0].value) + parseInt(input[1].value)

小提琴:http: //jsfiddle.net/RYh7U/145/

于 2013-04-18T10:22:13.030 回答