Javascript 如何简化这个switch语句?
出于某种原因,我必须偏移div的左上方位置。我已经开始创建这个switch语句,并注意到一种模式,当大于3时,将值递增一个数字,然后将下一个值递增最后一个偏移量-.11。我如何简化这段代码,也许创建一个公式或其他东西,而不是许多case语句 这是我的密码: matte_width_value是select语句的值Javascript 如何简化这个switch语句?,javascript,Javascript,出于某种原因,我必须偏移div的左上方位置。我已经开始创建这个switch语句,并注意到一种模式,当大于3时,将值递增一个数字,然后将下一个值递增最后一个偏移量-.11。我如何简化这段代码,也许创建一个公式或其他东西,而不是许多case语句 这是我的密码: matte_width_value是select语句的值 switch (matte_width_value) { case 2.25: offset = -.4; break;
switch (matte_width_value)
{
case 2.25:
offset = -.4;
break;
case 2.5:
offset = -.7;
break;
case 2.75:
offset = -1.1;
break;
case 3.25:
offset = 1.35;
break;
case 3.5:
offset = 1.24;
break;
case 3.75:
offset = 1.12;
break;
case 4:
offset = 1.01;
break;
//The cases will increment by .25 until it reaches <6
}
x = (matte_width_value + offset) * ppi; //ppi is defined elsewhere
y = (matte_width_value + offset) * ppi;
开关(蒙版宽度值)
{
案例2.25:
偏移量=-0.4;
打破
案例2.5:
偏移量=-0.7;
打破
案例2.75:
偏移量=-1.1;
打破
案例3.25:
偏移量=1.35;
打破
案例3.5:
偏移量=1.24;
打破
案例3.75:
偏移量=1.12;
打破
案例4:
偏移量=1.01;
打破
//案例将增加0.25,直到它达到看起来像是查找表的案例
var mapping = {
'2.25': -.4,
'2.5': -.7,
// and so forth
};
offset = mapping[ matte_width_value ];
这只是原来问题的一个解决办法。对于实际问题,可能有更好的解决方案。你的最终解决方案是找出你为什么必须这样做。我猜你的CSS有问题,这是一个解决办法。出于某种原因,我必须为div偏移我的左上方位置。你必须偏移它,否则怎么办?你能解释一下什么是偏移吗它完成了?或者它没有居中。我将添加一个图像来向您展示我正在谈论的内容,并包括实际的html标记。@AllisonC:这听起来像是样式的问题,很可能不应该通过编程来解决。否则,一旦原始CSS再次更改,这可能会永远困扰您,将您拖入一个永远无法解决的问题CSS更新-->更改代码-->CSS更新-->更改代码-->等的周期。@Shanimal-值将始终是这些数字中的一个。如果这不可能是OP实际问题的最佳解决方案,那么作为一个注释并链接到其他数千个开关->查找表答案中的一个,不是更好吗?您可以编写一些解释ion.将对读者有所帮助:)
matte_width_value = 4;
if (matte_width_value > 3) {
offset =1.35 - (((matte_width_value - 3.25) / .25) * .11);
} else {
switch (matte_width_value)
{
case 2.25:
offset = -.4;
break;
case 2.5:
offset = -.7;
break;
case 2.75:
offset = -1.1;
break;
}
}
document.write(offset);
matte_width_value = 4;
if (matte_width_value > 3) {
offset =1.35 - (((matte_width_value - 3.25) / .25) * .11);
} else {
switch (matte_width_value)
{
case 2.25:
offset = -.4;
break;
case 2.5:
offset = -.7;
break;
case 2.75:
offset = -1.1;
break;
}
}
document.write(offset);