如果说声长,一个更好的方法?

时间:2014-07-07 14:07:11

标签: javascript jquery

我有这个可怕的冗长代码,在鼠标移动时运行:

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。有没有办法让它更短,更有效?

3 个答案:

答案 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;
   }
}