Javascript:生成静态代码、动态输入列表
我有这段代码,它检查一些id并启用其他id,javascript非常清楚它的作用,但由于它对应于一些特定的id范围,我不能在它完成之前只看一眼,但我正在寻找一种方法来实现这一动态并保存40行(或更多)代码,因为这不是最好的方法Javascript:生成静态代码、动态输入列表,javascript,html,dynamic,Javascript,Html,Dynamic,我有这段代码,它检查一些id并启用其他id,javascript非常清楚它的作用,但由于它对应于一些特定的id范围,我不能在它完成之前只看一眼,但我正在寻找一种方法来实现这一动态并保存40行(或更多)代码,因为这不是最好的方法 function loopGroup1() { var a = 0; do { $$('.selectedAuthorities-3_' + a).each(function(chk1) { // watch for
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);
};
函数loopGroup1(){
var a=0;
做{
$$('.selectedAuthorities-3_'+a)。每个(函数(chk1){
//注意点击
chk1.观察('点击')功能(evt){
dynamicCheckbox1();
});
dynamicCheckbox1();
});
a++;
}a<4;
}
函数dynamicCheckbox1(){
//计算首先检查的组_的数量,
//如果选中任何选项,则为doEnable true
var doEnable=($$('.selectedAuthorities-3_0:checked')。长度>0)?真
:假;
var doEnable1=($$('.selectedAuthorities-3_1:checked')。长度>0)?真
:假;
var doEnable2=($$('.selectedAuthorities-3_2:checked')。长度>0)?真
:假;
//对于组中的每一秒,启用复选框,然后
//从父标签中删除cssDisabled类
var i=0;
做{
$$('.selectedAuthorities-4_'+i)。每个(功能(项){
if(doEnable | | doEnable1 | | doEnable2){
item.enable().up('li').removeClassName('cssDisabled');
}否则{
item.disable().up('li').addClassName('cssDisabled');
}
});
i++;
}而(i<4);
};
/*
*
*回路组2
*
*
*/
函数loopGroup2(){
var a=0;
做{
$$('.selectedAuthorities-5_'+a)。每个(函数(chk1){
//注意点击
chk1.观察('点击')功能(evt){
dynamicCheckbox2();
});
dynamicCheckbox2();
});
a++;
}a<4;
}
函数dynamicCheckbox2(){
//计算首先检查的组_的数量,
//如果选中任何选项,则为doEnable true
var doEnable3=($$('.selectedAuthorities-5_0:checked')。长度>0)?真
:假;
//对于组中的每一秒,启用复选框,然后
//从父标签中删除cssDisabled类
var i=0;
做{
$$('.所选权限-6_'+i).每个(功能(项){
如果(doEnable3){
item.enable().up('li').removeClassName('cssDisabled');
}否则{
item.disable().up('li').addClassName('cssDisabled');
}
});
i++;
}而(i<4);
};
/*
*
*环路组3
*
*
*/
函数loopGroup3(){
var a=0;
做{
$$('.selectedAuthorities-6_'+a).每个(函数(chk1){
//注意点击
chk1.观察('点击')功能(evt){
dynamicCheckbox3();
});
dynamicCheckbox3();
});
a++;
}a<4;
}
函数dynamicCheckbox3(){
//计算首先检查的组_的数量,
//如果选中任何选项,则为doEnable true
var doEnable4=($$('.selectedAuthorities-6_0:checked')。长度>0)?真
:假;
var doEnable5=($$('.selectedAuthorities-6_1:选中')。长度>0)?真
:假;
//对于组中的每一秒,启用复选框,然后
//从父标签中删除cssDisabled类
var i=0;
做{
$$('.selectedAuthorities-7_'+i)。每个(功能(项){
如果(doEnable4 | | doEnable5){
item.enable().up('li').removeClassName('cssDisabled');
}否则{
item.disable().up('li').addClassName('cssDisabled');
}
});
i++;
}而(i<4);
};
/*
*
*环路组4
*
*
*/
函数loopGroup4(){
var a=0;
做{
$$('.selectedAuthorities-9_'+a)。每个(函数(chk1){
//注意点击
chk1.观察('点击')功能(evt){
dynamicCheckbox4();
});
dynamicCheckbox4();
});
a++;
}a<4;
}
函数dynamicCheckbox4(){
//计算首先检查的组_的数量,
//如果选中任何选项,则为doEnable true
var doEnable6=($$('.selectedAuthorities-9_0:checked')。长度>0)?真
:假;
var doEnable7=($$('.selectedAuthorities-9_1:checked')。长度>0)?真
:假;
//对于组中的每一秒,启用复选框,然后
//从父标签中删除cssDisabled类
var i=0;
做{
$$('.所选权限-10_'+i).每个(功能(项){
如果(doEnable6 | | doEnable7){
item.enable().up('li').removeClassName('cssDisabled');
}否则{
item.disable().up('li').addClassName('cssDisabled');
}
});
i++;
}而(i<4);
};
这不是答案,但这里有一些额外的代码:
var doEnable = ($$('.selectedAuthorities-3_0:checked').length > 0) ? true
: false;
应该是
var doEnable = $$('.selectedAuthorities-3_0:checked').length > 0;
三元运算符只是让它变得更笨拙。代码中有许多不必要的重复,可能更具体地说,您正在尝试执行的操作,即我希望使用此函数X,并允许它对任何一组复选框或其他对象起作用。很难说你在问什么“在它完成之前我不能只看一眼,但我正在寻找一种方法来实现这个动态”