马克unmark javascript?

时间:2011-03-30 16:21:05

标签: javascript html

我有一个功能来选择表格中的所有复选框:

<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中将“标记”重命名为“取消标记”吗?

6 个答案:

答案 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")
    });

})