Javascript:制作静态代码,动态 - 输入列表

时间:2010-05-14 20:34:20

标签: javascript html dynamic

我有这个代码,检查一些ID并启用其他代码,javascript非常清楚它的作用,但由于它对应于某些特定的id范围,我不能只看一看,直到它完成,但我是寻找一种方法来做这个动态并保存40行代码(或更多),因为它不是最好的方式。

function loopGroup1() {
    var a = 0;
    do {
        $$('.selectedAuthorities-3_' + a).each(function(chk1) {
            // watch for clicks
                chk1.observe('click', function(evt) {
                    dynamicCheckbox1();
                });
                dynamicCheckbox1();
            });
        a++;
    } while (a < 4);
}

function dynamicCheckbox1() {
    // count how many of group_first are checked,
    // doEnable true if any are checked
    var doEnable = ($$('.selectedAuthorities-3_0:checked').length > 0) ? true
            : false;
    var doEnable1 = ($$('.selectedAuthorities-3_1:checked').length > 0) ? true
            : false;
    var doEnable2 = ($$('.selectedAuthorities-3_2:checked').length > 0) ? true
            : false;
    // for each in group_second, enable the checkbox, and
    // remove the cssDisabled class from the parent label
    var i = 0;

    do {
        $$('.selectedAuthorities-4_' + i).each(function(item) {
            if (doEnable || doEnable1 || doEnable2) {
                item.enable().up('li').removeClassName('cssDisabled');
            } else {
                item.disable().up('li').addClassName('cssDisabled');
            }
        });
        i++;
    } while (i < 4);
};

/*
 * 
 * Loop Group 2
 * 
 * 
 */

function loopGroup2() {
    var a = 0;
    do {
        $$('.selectedAuthorities-5_' + a).each(function(chk1) {
            // watch for clicks
                chk1.observe('click', function(evt) {
                    dynamicCheckbox2();
                });
                dynamicCheckbox2();
            });
        a++;
    } while (a < 4);
}

function dynamicCheckbox2() {
    // count how many of group_first are checked,
    // doEnable true if any are checked
    var doEnable3 = ($$('.selectedAuthorities-5_0:checked').length > 0) ? true
            : false;
    // for each in group_second, enable the checkbox, and
    // remove the cssDisabled class from the parent label
    var i = 0;

    do {
        $$('.selectedAuthorities-6_' + i).each(function(item) {
            if (doEnable3) {
                item.enable().up('li').removeClassName('cssDisabled');
            } else {
                item.disable().up('li').addClassName('cssDisabled');
            }
        });
        i++;
    } while (i < 4);
};

/*
 * 
 * Loop Group 3
 * 
 * 
 */

function loopGroup3() {
    var a = 0;
    do {
        $$('.selectedAuthorities-6_' + a).each(function(chk1) {
            // watch for clicks
                chk1.observe('click', function(evt) {
                    dynamicCheckbox3();
                });
                dynamicCheckbox3();
            });
        a++;
    } while (a < 4);
}

function dynamicCheckbox3() {
    // count how many of group_first are checked,
    // doEnable true if any are checked
    var doEnable4 = ($$('.selectedAuthorities-6_0:checked').length > 0) ? true
            : false;
    var doEnable5 = ($$('.selectedAuthorities-6_1:checked').length > 0) ? true
            : false;
    // for each in group_second, enable the checkbox, and
    // remove the cssDisabled class from the parent label
    var i = 0;

    do {
        $$('.selectedAuthorities-7_' + i).each(function(item) {
            if (doEnable4 || doEnable5) {
                item.enable().up('li').removeClassName('cssDisabled');
            } else {
                item.disable().up('li').addClassName('cssDisabled');
            }
        });
        i++;
    } while (i < 4);
};

/*
 * 
 * Loop Group 4
 * 
 * 
 */

function loopGroup4() {
    var a = 0;
    do {
        $$('.selectedAuthorities-9_' + a).each(function(chk1) {
            // watch for clicks
                chk1.observe('click', function(evt) {
                    dynamicCheckbox4();
                });
                dynamicCheckbox4();
            });
        a++;
    } while (a < 4);
}

function dynamicCheckbox4() {
    // count how many of group_first are checked,
    // doEnable true if any are checked
    var doEnable6 = ($$('.selectedAuthorities-9_0:checked').length > 0) ? true
            : false;
    var doEnable7 = ($$('.selectedAuthorities-9_1:checked').length > 0) ? true
            : false;
    // for each in group_second, enable the checkbox, and
    // remove the cssDisabled class from the parent label
    var i = 0;

    do {
        $$('.selectedAuthorities-10_' + i).each(function(item) {
            if (doEnable6 || doEnable7) {
                item.enable().up('li').removeClassName('cssDisabled');
            } else {
                item.disable().up('li').addClassName('cssDisabled');
            }
        });
        i++;
    } while (i < 4);
};

1 个答案:

答案 0 :(得分:0)

这不是答案,但这里有一些额外的代码:

var doEnable = ($$('.selectedAuthorities-3_0:checked').length > 0) ? true
            : false;

应该是

var doEnable = $$('.selectedAuthorities-3_0:checked').length > 0;

三元运算符正在使它变得更加笨拙。