我有一个包含添加和删除行的按钮的表单。我检查所有复选框的javascript函数适用于第一行,但是一旦我向表单添加更多行,第一行仍然是唯一被检查的行。
任何提示?
这是我的javascript函数:
<code>
//checks all rows
function checkAll() {
var masterCheck = document.getElementById('masterCheck');
var on = false;
if(masterCheck.checked==true) {
document.getElementById('checkbox').checked=true;
} else {
document.getElementById('checkbox').checked=false;
}
}
</code>
以下是表格: http://crimsonroot.com/files/freelance/new.html
感谢任何帮助!
答案 0 :(得分:1)
我发现了什么问题! @Mohammed你的答案真的很有帮助。我发现只有一两个语法错误。为了检查和取消选中所有框,我需要添加一个布尔变量作为函数的输入,如下所示:
//checks all rows
function checkAll(bool) {
var masterCheck = document.getElementById('masterCheck');
var allcheck = document.getElementsByClassName('checkbox');
var on = false;
for (var i = 0; i < allcheck.length; i++) {
if (masterCheck.checked == true) {
allcheck[i].checked = true;
} else {
allcheck[i].checked = false;
}
}
}
出于某种原因,这是拼图的最后一块。感谢您的帮助!
答案 1 :(得分:0)
你应该尝试这样的事情。
$("#masterCheck").click(function () {
$('input:checkbox').not(this).prop('checked', this.checked);
});
答案 2 :(得分:0)
由于document.getElementById()
返回第一个元素,因为id不能多于一个。要使其可用,请添加一个类复选框并尝试以下代码:
//checks all rows
function checkAll() {
var masterCheck = document.getElementById('masterCheck');
var allcheck = getElementsByClassName('checkbox');
var on = false;
for (var i = 0; i < allcheck.length; i++) {
if (masterCheck.checked == true) {
allchecked[i].checked = true;
} else {
allchecked[i].checked = false;
}
}
}