跪求路过的大哥大嫂帮忙看一看,一个if语句没有反应??

时间:2021-01-17 19:22:20
function movestyle(element,x0,y0,interval)      // 定义函数一,将一个图片从当前位置(x,y)移动到指定位置(x0,y0)
{ x=parseInt(element.style.left);
  y=parseInt(element.style.top);
  if(x!=x0) {element.style.left=x0+'px';}
  if(y>y0) {y--;}
  if(y<y0) {y++;}
  element.style.top=y+'px';
  mm=setTimeout(function(){movestyle(element,x0,y0,interval);},interval); 
   if(x==10&&y==0)       //如果图片达到指定位置(10,0),则执行函数二movestyle_1,这个if语句可以正常执行
  {movestyle_1(img_zan,10,400,1);}
}
function movestyle_1(element,x1,y1,interval)     // 定义函数二,将这个图片从(x0,y0)移动到指定位置(x1,y1)
{ element.style.left=x1+'px';
  if(y>y1) {y--;}
  if(y<y1) {y++;}
  element.style.top=y+'px';
  mm=setTimeout(function(){movestyle_1(element,x1,y1,interval);},interval); 
}
movestyle(img_zan,10,0,1);       //将所谓的指定位置(x0,y0)设置为(10,0)
if(x==10&&y==0)          //如果将前面的if语句放在这里,就不会被执行??不知道为什么???
{movestyle_1(img_zan,10,400,1);}

for(var i=0;i<10;i++)
{movestyle(img_zan,10,0,1);}//我想循环执行movestyle函数十次,为什么也没有反应???

4 个解决方案

#1


楼主要做什么,先把自己的逻辑理清楚。

程序和你想象的不一样,如果js 没报错,就是逻辑问题。

可以单步调试!!!

 mm=setTimeout(function(){movestyle(element,x0,y0,interval);},interval); 
  if(x==10&&y==0)       //如果图片达到指定位置(10,0),则执行函数二movestyle_1,这个if语句可以正常执行
  {movestyle_1(img_zan,10,400,1);}

当 x==10 &&y==0 时
movestyle_1(img_zan,10,400,1)
会这执行

再执行 movestyle(element,x0,y0,interval);

这是你需要的逻辑? 


for(var i=0;i<10;i++)
{movestyle(img_zan,10,0,1);}

只要js 没错误,程序肯定会执行10次!
你可以用 console.log 或者单步调试来验证

#2


movestyle(img_zan,10,0,1);   
后面好像多了个分号。。。。

#3


看错了,,,,,

#4


其实我是想先让图片从当前位置(x,y)移动到指定位置(x0,y0), 如果 图片达到指定位置(x0,y0),则执行函数二movestyle_1,从而将这个图片从(x0,y0)移动到指定位置(x1,y1),问题是我将这个if语句到底放在外面好,还是嵌套在函数一里面,逻辑上两个应该都可以,但是只有嵌套在函数一餐能正常执行者连个连贯的动作,这才我不理解的地方??

#1


楼主要做什么,先把自己的逻辑理清楚。

程序和你想象的不一样,如果js 没报错,就是逻辑问题。

可以单步调试!!!

 mm=setTimeout(function(){movestyle(element,x0,y0,interval);},interval); 
  if(x==10&&y==0)       //如果图片达到指定位置(10,0),则执行函数二movestyle_1,这个if语句可以正常执行
  {movestyle_1(img_zan,10,400,1);}

当 x==10 &&y==0 时
movestyle_1(img_zan,10,400,1)
会这执行

再执行 movestyle(element,x0,y0,interval);

这是你需要的逻辑? 


for(var i=0;i<10;i++)
{movestyle(img_zan,10,0,1);}

只要js 没错误,程序肯定会执行10次!
你可以用 console.log 或者单步调试来验证

#2


movestyle(img_zan,10,0,1);   
后面好像多了个分号。。。。

#3


看错了,,,,,

#4


其实我是想先让图片从当前位置(x,y)移动到指定位置(x0,y0), 如果 图片达到指定位置(x0,y0),则执行函数二movestyle_1,从而将这个图片从(x0,y0)移动到指定位置(x1,y1),问题是我将这个if语句到底放在外面好,还是嵌套在函数一里面,逻辑上两个应该都可以,但是只有嵌套在函数一餐能正常执行者连个连贯的动作,这才我不理解的地方??