创建一个隐藏div的函数
Create a function to hide divs
我想在表单中进行选择并单击 'Generate Factsheet' 按钮时显示表格。我有一个工作代码,在显示我感兴趣的 div 时,我单独隐藏其他 div。由于我在表单中有几个选项(因此有几个相应的 div,其中包含相应的表),最终代码看起来很笨重.我想写一个函数来隐藏其他 div,同时显示我感兴趣的那个。这是我目前的代码:
var tableDivs = ['tableOPVDiv','tablePneumoDiv','tableRotaDiv'];
var selectedVaccine;
var selectedTableDiv;
function generateFactsheetFunction(){
// Selecting the vaccine chosen from the dropdown
var e = document.getElementById("selectVaccine");
selectedVaccine = e.options[e.selectedIndex].text;
console.log("selectedVaccine: ", selectedVaccine);
if (selectedVaccine=="Rotavirus Vaccine"){
selectedTableDiv='tableRotaDiv';
console.log("rotavirus selected");
hideOtherTables();
} else if (selectedVaccine=="Polio Vaccine"){
console.log("polio selected");
selectedTableDiv='tableOPVDiv';
hideOtherTables();
} else if (selectedVaccine=="Pneumococcal Vaccine"){
console.log("pneumo selected");
selectedTableDiv='tablePneumoDiv';
hideOtherTables();
}
}
function hideOtherTables(){
var testa = tableDivs.indexOf(selectedTableDiv);
console.log("tableDivs[testa]: ", tableDivs[testa]);
console.log("testa: ", testa);
testb = tableDivs[testa];
console.log("testb: ", testb);
document.getElementById(tableDivs[testa]).style.display="block";
/*var newTableDivs=tableDivs.splice(testa);*/
/*for (y=0;y<newTableDivs.length;y++){
document.getElementById(newTableDivs[y]).style.display="none";
}*/
}
未注释的部分工作正常。在注释部分,我想说的是,对于除selectedVaccine
以外的所有数组元素,我希望显示为:
document.getElementById(tableDivs[testa]).style.display="none";
我无法拼接数据,因为选择是重复的(选择来自表格)。如何将与其他选择关联的tableDivs 的可见性设置为none
。
无法读取 属性 'style' of null 这意味着 document.getElementById(tableDivs[y]) return null 和找不到这个元素
尝试写
document.getElementById("ElementId")
为什么要分别更改每个分区的显示属性?给所有部门起一个共同的 class 名称,并立即隐藏它们,然后只显示所需的 table.
$(".yourClass").hide();
document.getElementById(tableDivs[testa]).style.display="block";
您还必须使用 jQuery 库。
如果您不熟悉 jQuery,那么使用 for 循环先隐藏所有 table,然后仅显示所需的 table。
for (y=0;y<TableDivs.length;y++){//you need not create newTableDivs
document.getElementById(TableDivs[y]).style.display="none";
}
document.getElementById(tableDivs[testa]).style.display="block";
即你只需要交换执行顺序。 ;)
我想在表单中进行选择并单击 'Generate Factsheet' 按钮时显示表格。我有一个工作代码,在显示我感兴趣的 div 时,我单独隐藏其他 div。由于我在表单中有几个选项(因此有几个相应的 div,其中包含相应的表),最终代码看起来很笨重.我想写一个函数来隐藏其他 div,同时显示我感兴趣的那个。这是我目前的代码:
var tableDivs = ['tableOPVDiv','tablePneumoDiv','tableRotaDiv'];
var selectedVaccine;
var selectedTableDiv;
function generateFactsheetFunction(){
// Selecting the vaccine chosen from the dropdown
var e = document.getElementById("selectVaccine");
selectedVaccine = e.options[e.selectedIndex].text;
console.log("selectedVaccine: ", selectedVaccine);
if (selectedVaccine=="Rotavirus Vaccine"){
selectedTableDiv='tableRotaDiv';
console.log("rotavirus selected");
hideOtherTables();
} else if (selectedVaccine=="Polio Vaccine"){
console.log("polio selected");
selectedTableDiv='tableOPVDiv';
hideOtherTables();
} else if (selectedVaccine=="Pneumococcal Vaccine"){
console.log("pneumo selected");
selectedTableDiv='tablePneumoDiv';
hideOtherTables();
}
}
function hideOtherTables(){
var testa = tableDivs.indexOf(selectedTableDiv);
console.log("tableDivs[testa]: ", tableDivs[testa]);
console.log("testa: ", testa);
testb = tableDivs[testa];
console.log("testb: ", testb);
document.getElementById(tableDivs[testa]).style.display="block";
/*var newTableDivs=tableDivs.splice(testa);*/
/*for (y=0;y<newTableDivs.length;y++){
document.getElementById(newTableDivs[y]).style.display="none";
}*/
}
未注释的部分工作正常。在注释部分,我想说的是,对于除selectedVaccine
以外的所有数组元素,我希望显示为:
document.getElementById(tableDivs[testa]).style.display="none";
我无法拼接数据,因为选择是重复的(选择来自表格)。如何将与其他选择关联的tableDivs 的可见性设置为none
。
无法读取 属性 'style' of null 这意味着 document.getElementById(tableDivs[y]) return null 和找不到这个元素 尝试写
document.getElementById("ElementId")
为什么要分别更改每个分区的显示属性?给所有部门起一个共同的 class 名称,并立即隐藏它们,然后只显示所需的 table.
$(".yourClass").hide();
document.getElementById(tableDivs[testa]).style.display="block";
您还必须使用 jQuery 库。
如果您不熟悉 jQuery,那么使用 for 循环先隐藏所有 table,然后仅显示所需的 table。
for (y=0;y<TableDivs.length;y++){//you need not create newTableDivs
document.getElementById(TableDivs[y]).style.display="none";
}
document.getElementById(tableDivs[testa]).style.display="block";
即你只需要交换执行顺序。 ;)