在javascript中获取复选框值

时间:2011-08-05 20:11:53

标签: javascript

粗略地说,这是我的代码:

<form name="mpform" id="mpform">
<input type="checkbox" onclick="mpfunc()" id="mpay" name="mpay[]" value="19" style="float:left;" />
//many of the above input tag - only the value changes with other numbers
</form>
<script type="text/javascript">
function mpfunc()
{
var comp=0;
document.getElementById("mpaydiv").style.visibility="visible";
for(var i=0; i< document.getElementById("mpform").elements['mpay[]'].length;i++){
if(document.getElementById("mpform").elements['mpay[]'][i].checked)
comp = comp + document.getElementById("mpform").elements['mpay[]'][i].value;
}
document.getElementById("mpaydiv").innerHTML=comp;
}
</script>
<div id="mpaydiv" style="position:fixed; right:0; visibility:hidden; bottom:0; border:1px solid black; background-color:white; padding:2px 2px;"></div></div>
    </div>

    <div id="footer"></div>
</div>

我试过用表格[0],mpform等替换getElementById(“mpform”),但我似乎无法访问这些值。目前的getelementid我得到了

  

错误:document.getElementById(“mpform”)为null源文件:   index.php?page = fakturi线:3938

使用mpform我得到的mpform是未定义的,如表格[0] 请帮忙。如何获取所有选中复选框的值的总和?

6 个答案:

答案 0 :(得分:1)

应该是这样的

     <form name="mpform" id="mpform"></form>

答案 1 :(得分:1)

表单的ID必须是mpform。你有name =“mpform”。添加id =“mpform”。

另外,为了提高效率,您应该将功能更改为此。使用多个getElementById来获取相同的元素是非常低效的。

<script type="text/javascript">
function mpfunc()
{
   var comp=0;
   document.getElementById("mpaydiv").style.visibility="visible";
   var elements = document.getElementById("mpform").elements;
   for(var i=0; i< elements.length;i++){
      if(elements[i].type == 'checkbox' && elements[i].checked)
         comp = comp + parseInt(elements[i].value);
   }
   document.getElementById("mpaydiv").innerHTML=comp;
}
</script>

答案 2 :(得分:1)

您尝试通过 ID 获取元素,但您为其指定了名称。

<form id="mpform">

答案 3 :(得分:1)

我似乎回想起IE表格数组的0索引存在问题。您可以通过document.getElementsByName("mpform")[0]document.forms['mpform']访问它。要获取复选框后代,您可以使用getElementById('mpay')document.getElementsByName("mpay")[0]document.getElementsByName("mpform")[0].elements[0]

答案 4 :(得分:1)

在表单元素加载完成之前,函数是否可能正在运行?尝试将该函数作为window.onload事件的一部分运行。

答案 5 :(得分:1)

我刚刚使用你的html代码尝试了这个,它似乎工作。我编辑了上面的答案来展示这一点,但也将其作为另一个答案发布,以确保你看到了。

<script type="text/javascript">
function mpfunc()
{
   var comp=0;
   document.getElementById("mpaydiv").style.visibility="visible";
   var elements = document.getElementById("mpform").elements;
   for(var i=0; i< elements.length;i++){
      if(elements[i].type == 'checkbox' && elements[i].checked)
         comp = comp + parseInt(elements[i].value);
   }
   document.getElementById("mpaydiv").innerHTML=comp;
}
</script>