innerHTML无法在事件处理函数内部工作(Javascript)

时间:2016-01-21 09:08:47

标签: javascript forms events checkbox radio

我创建了一个函数updatePrice,我已将其与#34; click"我的HTML表单中的复选框和单选按钮上的事件。每个复选框和收音机基本上代表一个项目,其价格作为这些cat_id元素的值属性。当我选中或取消选中任何一个框时,该函数会触发,循环遍历表单中的所有元素,并将所有已检查项目的总价格更新为我在表单下方的div元素,并带有id标记" priceOutput&# 34。

以下代码完美无缺,打印出来:此商品的价格为$(商品价格)。

<input>

但是,如果我切换最后一行,则根本不打印该行:

function updatePrice() {
  var price = 0
  for (i=0;i<=form.length;i++) {
    var element = form[i]
    if(element.checked) {
      price+=parseInt(element.value)
    }
    document.getElementById("priceOutput").innerHTML = "The price of this item is $" + price + "."
  }
}

为什么我必须在for的{}中写一行才能工作。价格变量的范围是否扩展到整个updatePrice函数?

我仍然很喜欢编程,如果这是一个基本问题,请原谅我。

2 个答案:

答案 0 :(得分:2)

在我看来,它不会因为您导致错误而打印。由于数组索引从0开始,因此for循环不应使用<=,而应使用<

for (i=0;i<form.length;i++) {
...
}

之所以没有打印的原因是因为在最后一个循环中,函数错误和设置内部HTML永远不会被执行。

答案 1 :(得分:0)

好像您的代码存在错误,如何将var添加到for循环并从i<=form.length

中删除=

for(var i = 0; i&lt; form.length; i ++)