在 Javascript 中,如何向函数 change() 添加附加语句?
In Javascript how can I add additional statements to a function change()?
我相信使用 Javascript 可能有一个简单的解决方案来解决我正在寻找的问题。如果我的 function change(name)
等于特定 ID,我该如何添加其他语句?例如:
function change(name) {
document.getElementById('Rectangle-container').style.display = 'none';
/* These require adding because the function's change(name) ID = Rectangle-container */
document.getElementById("ResultsTotalLiters").innerHTML = RectangleTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RectangleTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RectangleTotalTurnovers
/* if the change is made so the active ID is oval-container, then 3 different statements need adding like so: */
document.getElementById('Oval-container').style.display = 'none';
document.getElementById("ResultsTotalLiters").innerHTML = OvalTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OvalTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OvalTotalTurnovers;
/**/
document.getElementById('Round-container').style.display = 'none';
/**/
document.getElementById('Oblong-container').style.display = 'none';
document.getElementById(name).style.display='block';
}
这些需要添加到矩形容器中
document.getElementById("ResultsTotalLiters").innerHTML = RectangleTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RectangleTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RectangleTotalTurnovers;
这些需要添加到椭圆形容器中
document.getElementById("ResultsTotalLiters").innerHTML = OvalTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OvalTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OvalTotalTurnovers;
需要加入圆形容器
document.getElementById("ResultsTotalLiters").innerHTML = RoundTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RoundTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RoundTotalTurnovers;
需要添加到长方形容器
document.getElementById("ResultsTotalLiters").innerHTML = OblongTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OblongTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OblongTotalTurnovers;
您应该更改变量,使每种类型的形状变量都包含在一个 对象 中,而不是作为一个独立的变量。例如,而不是
RectangleTotalLiters
RectangleTurnoverTime
RectangleTotalTurnovers
OvalTotalLiters;
OvalTurnoverTime;
OvalTotalTurnovers;
// ...
你可能会考虑像这样的对象结构
const shapeInfo = {
Rectangle: {
totalLiters: <something>,
turnoverTime: <something>,
totalTurnovers: <something>,
},
Oval: {
totalLiters: <something>,
turnoverTime: <something>,
totalTurnovers: <something>,
},
// ...
}
然后,你就可以写出大大的DRY-er代码了:
const { totalLiters, turnoverTime, totalTurnovers } = shapeInfo[PoolShape];
/* assign to #ResultsTotalLiters, #ResultsTurnoverTime, #ResultsTotalTurnovers
对于你的 change
函数,你可能有一个包含所有可能形状的持久数组,forEach
在它上面,如果 id
不匹配 [=17] 则隐藏元素=]:
const shapes = ['Rectangle', 'Oval', 'Round', 'Oblong'];
function change(name) {
shapes.forEach(id => {
if (name !== id) document.getElementById(id).style.display = 'none';
});
document.getElementById(name).style.display = 'block';
}
我相信使用 Javascript 可能有一个简单的解决方案来解决我正在寻找的问题。如果我的 function change(name)
等于特定 ID,我该如何添加其他语句?例如:
function change(name) {
document.getElementById('Rectangle-container').style.display = 'none';
/* These require adding because the function's change(name) ID = Rectangle-container */
document.getElementById("ResultsTotalLiters").innerHTML = RectangleTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RectangleTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RectangleTotalTurnovers
/* if the change is made so the active ID is oval-container, then 3 different statements need adding like so: */
document.getElementById('Oval-container').style.display = 'none';
document.getElementById("ResultsTotalLiters").innerHTML = OvalTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OvalTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OvalTotalTurnovers;
/**/
document.getElementById('Round-container').style.display = 'none';
/**/
document.getElementById('Oblong-container').style.display = 'none';
document.getElementById(name).style.display='block';
}
这些需要添加到矩形容器中
document.getElementById("ResultsTotalLiters").innerHTML = RectangleTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RectangleTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RectangleTotalTurnovers;
这些需要添加到椭圆形容器中
document.getElementById("ResultsTotalLiters").innerHTML = OvalTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OvalTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OvalTotalTurnovers;
需要加入圆形容器
document.getElementById("ResultsTotalLiters").innerHTML = RoundTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = RoundTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = RoundTotalTurnovers;
需要添加到长方形容器
document.getElementById("ResultsTotalLiters").innerHTML = OblongTotalLiters;
document.getElementById("ResultsTurnoverTime").innerHTML = OblongTurnoverTime;
document.getElementById("ResultsTotalTurnovers").innerHTML = OblongTotalTurnovers;
您应该更改变量,使每种类型的形状变量都包含在一个 对象 中,而不是作为一个独立的变量。例如,而不是
RectangleTotalLiters
RectangleTurnoverTime
RectangleTotalTurnovers
OvalTotalLiters;
OvalTurnoverTime;
OvalTotalTurnovers;
// ...
你可能会考虑像这样的对象结构
const shapeInfo = {
Rectangle: {
totalLiters: <something>,
turnoverTime: <something>,
totalTurnovers: <something>,
},
Oval: {
totalLiters: <something>,
turnoverTime: <something>,
totalTurnovers: <something>,
},
// ...
}
然后,你就可以写出大大的DRY-er代码了:
const { totalLiters, turnoverTime, totalTurnovers } = shapeInfo[PoolShape];
/* assign to #ResultsTotalLiters, #ResultsTurnoverTime, #ResultsTotalTurnovers
对于你的 change
函数,你可能有一个包含所有可能形状的持久数组,forEach
在它上面,如果 id
不匹配 [=17] 则隐藏元素=]:
const shapes = ['Rectangle', 'Oval', 'Round', 'Oblong'];
function change(name) {
shapes.forEach(id => {
if (name !== id) document.getElementById(id).style.display = 'none';
});
document.getElementById(name).style.display = 'block';
}