粗略地说,这是我的代码:
<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] 请帮忙。如何获取所有选中复选框的值的总和?
答案 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>