1

我在网上找到了这段代码,在 Firefox 和 Chrome 上都可以,但在 IE 上不起作用,有人知道如何在 IE 上修复它吗?

按钮的值确实切换,但只是复选框无法更改

<html>

<head>
<script type="text/javascript">

    function do_this(){

        var checkboxes = document.getElementsByName('approve[]');
        var button = document.getElementById('toggle');

        if(button.value == 'select'){
            for (var i in checkboxes){
                checkboxes[i].checked = 'FALSE';
            }
            button.value = 'deselect'
        }else{
            for (var i in checkboxes){
                checkboxes[i].checked = '';
            }
            button.value = 'select';
        }
    }
</script>
</head>

<body>
<input type="checkbox" name="approve[]" value="1" />
<input type="checkbox" name="approve[]" value="2" />
<input type="checkbox" name="approve[]" value="3" />

<input type="button" id="toggle" value="select" onClick="do_this()" />
</body>

</html>
4

2 回答 2

1

将处理程序放在代码中而不是内联被认为是最佳实践。您可以保存一些代码,并将 onclick 处理程序放在您的代码中,如下所示:

// add event handler
function init() {
    document.getElementById('toggle').onclick = function () {
        do_this(this);
    };
}
window.onload = init;

// me is the button here
function do_this(me) {
    var checkboxes = document.getElementsByName('approve[]');
    for (var i = 0; i < checkboxes.length; i++) {
        // toggle to what it is not
        checkboxes[i].checked = !checkboxes[i].checked;
    }
    me.value = me.value == 'select' ? 'deselect' : 'select';
}

示例小提琴以展示它的实际效果:http: //jsfiddle.net/qK2qS/

于 2013-08-20T23:39:16.310 回答
0

您必须将布尔值传递给checked属性。其他浏览器正在理解您的奇怪逻辑,并转换'FALSE'为布尔值true(选中该框),并''转换为false(取消选中它)

使用实际truefalse布尔值,它可能只是工作;)

于 2013-08-20T23:10:07.343 回答