@blog.justoneplanet.info

日々勉強

特定のチェックボックスをクリックすると指定のチェックボックスが全てチェックされるスクリプト

イベントリスナを使ってます。一応、IEとFFでは動作チェックしてます。

<script type="text/javascript">
//<[CDATA[
var switcherBoxId = 'switcher';
var targetBoxName = 'targets';
var addListen = (function(){
    if(window.addEventListener){
        return function(elm, type, func){
            elm.addEventListener(type, func, false);
        }
    }
    else if(window.attachEvent){
        return function(elm, type, func){
            elm.attachEvent('on' + type, func);
        }
    }
    else{
        return new Function;
    }
})();
addListen(
    window,
    'load',
    function(){
        addListen(
            document.getElementById(switcherBoxId),
            'click',
            function(e){
                if(e.target){
                    var target = e.target;
                }
                else{
                    var target = window.event.srcElement;
                }
                if(!target.checked){
                    var checkboxes = document.forms[0].elements[targetBoxId];
                    for(var i = 0, n = checkboxes.length; i < n; i++){
                        if(checkboxes[i].checked){
                            checkboxes[i].checked = false;
                        }
                    }
                }
                else{
                    var checkboxes = document.forms[0].elements[targetBoxId];
                    for(var i = 0, n = checkboxes.length; i < n; i++){
                        if(!checkboxes[i].checked){
                            checkboxes[i].checked = true;
                        }
                    }
                }
            }
        );
    }
);
//>>
</script>

ちなみにIEではメモリリークする気がする。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment