我有一个功能来选择表格中的所有复选框:
<script type="text/javascript">
function checkAll() {
var tab = document.getElementById("logs");
var elems = tab.getElementsByTagName("input");
var len = elems.length;
for (var i = 0; i < len; i++) {
if (elems[i].type == "checkbox") {
elems[i].checked = true;
}
}
}
但如果检查它们,我无法取消它们。我怎么能这样做?
<th width='2%'><a href="#" onclick="checkAll();">Mark</a></th>";
如果我执行checkAll()
,还可以在javascript中将“标记”重命名为“取消标记”吗?
答案 0 :(得分:3)
这应该做你想要的两件事:
function checkAll(obj) {
var tab = document.getElementById("logs");
var elems = tab.getElementsByTagName("input");
var len = elems.length;
for (var i = 0; i < len; i++) {
if (elems[i].type == "checkbox") {
if(elems[i].checked == true){
elems[i].checked = false;
}
else{
elems[i].checked = true;
}
}
}
if(obj.innerHTML == 'Mark') { obj.innerHTML = 'Unmark' }
else { obj.innerHTML = 'Mark' }
}
HTML:
<th width='2%'><a href="#" onclick="checkAll(this);">Mark</a></th>";
答案 1 :(得分:3)
1)为什么不使用jQuery框架,比如jQuery?
2)删除已选中,使用elems [i] .removeAttribute('checked')或设置elems [i] .checked = false;
3)要重命名,你必须将它的innerHTML或innerText设置为取消标记
答案 2 :(得分:2)
添加更多逻辑以查看它们是否已经过检查。这将反转其当前检查状态。
for (var i = 0; i < len; i++) {
if (elems[i].type == "checkbox") {
if (!elems[i].checked) {
elems[i].checked = true;
}
else elems[i].checked = false;
}
}
如果您只想取消全部选中,只需使用:
elems[i].checked = false;
答案 3 :(得分:2)
这将全部检查,无论其当前状态如何,或取消选中全部,取决于“Mark”或“Unmark”的当前文本。
<script type="text/javascript">
function checkAll(obj) {
var tab = document.getElementById("logs");
var elems = tab.getElementsByTagName("input");
var len = elems.length;
var state = obj.innerHTML == 'Mark';
for (var i = 0; i < len; i++) {
if (elems[i].type == "checkbox") {
elems[i].checked = state;
}
}
obj.innerHTML = state ? 'Mark' : 'Unmark';
}
然后HTML变为:
<th width='2%'><a href="#" onclick="checkAll(this);">Mark</a></th>";
答案 4 :(得分:1)
要取消选中,请尝试:
elems[i].checked = false;
答案 5 :(得分:0)
我建议你使用jquery,一切都更容易。
使用jquery你只需做这样的事情(+/-):
$(function(){
$('a.ClassName').click(function(){
var oTbl = $('#tableID');
$('input[type="checkbox"]', oTbl).attr("checked", "checked")
});
})