我有这个可怕的冗长代码,在鼠标移动时运行:
if (distance < 215) {
moveSmile(1)
}
if (distance < 200) {
moveSmile(2)
}
if (distance < 185) {
moveSmile(3)
}
if (distance < 170) {
moveSmile(4)
}
if (distance < 155) {
moveSmile(5)
}
if (distance < 140) {
moveSmile(6)
}
它所调用的功能:
function moveSmile (frameNum) {
mouthX = startMouthPos + mouthFrameWidth * frameNum
$('#mouth').css('background-position', -mouthX + 'px -359px')
}
我以15px的间隔移动div的背景位置,越接近目标div。有没有办法让它更短,更有效?
答案 0 :(得分:5)
只需快速公式即可:
moveSmile(Math.ceil((215 - distance) / 15);
(230 - 215) / 15 == 1
(230 - 200) / 15 == 2
...
(230 - 140) / 15 == 6
现在,Math.ceil
用于对未被15
整齐划分的步骤中的值进行舍入,直到相应的值。
答案 1 :(得分:5)
moveSmile(Math.ceil((215 - distance) / 15));
答案 2 :(得分:-1)
制作一个数组并循环键。
var bob = [215, 200 ... 140];
for(var i = 0; i < bob.length; i++)
{
if(distance < bob[i]) {
moveSmile(i+1);
break;
}
}