为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS实现动画效果的疑问?

关于JS实现动画效果的疑问?

叫我Admin 2016-04-21 10:41:31
在看《Javascript DOM编程艺术》这本书的第10章《用JavaScript实现动画效果》时,作者提到抽象化一个函数,抽象后的代码如下:function moveElement(elementID,final_x,final_y,interval) { if (!document.getElementById) return false;if (!document.getElementById(elementID)) return false;var elem = document.getElementById(elementID);var xpos = parseInt(elem.style.left);var ypos = parseInt(elem.style.top);if (xpos == final_x && ypos == final_y) { return true;} if (xpos < final_x) { xpos++;} if (xpos > final_x) { xpos--;} if (ypos < final_y) { ypos++;} if (ypos > final_y) { ypos--;} elem.style.left = xpos + "px";elem.style.top = ypos + "px";var repeat = "moveElement('" + elementID + "'," + final_x + "," + final_y + "," + interval + ")";movement = setTimeout(repeat, interval);}不明白的地方在倒数第三行repeat问题一:moveElement的四个参数为什么都要加上双引号,是因为都是字符串吗?但是实际用到的除了elementID是字符串,final_x、final_y、interval不都是数值吗?问题二:moveElement的四个参数为什么每一个都要在前后加上+符号?问题三:参数elementID外面加了一对双引号还有一对单引号,请问这是什么原因?
查看完整描述

2 回答

?
qq_青枣工作室_0

TA贡献446条经验 获得超754个赞

因为, movement = setTimeout(repeat, interval);  这里调用到repeat了。

setTimeout后的第一个参数,可以是字符串,也可以是一个function。

文章中,就是用字符串做参数。所以,要拼接出这个字符串。

var repeat = "moveElement('" + elementID + "'," + final_x + "," + final_y + "," + interval + ")";

实际效果,大概就是:

movement = setTimeout("moveElement('id', 100, 100, 30)", interval);

查看完整回答
1 反对 回复 2016-04-21
?
ruibin

TA贡献358条经验 获得超213个赞

首先回答你第一个和第二个问题,这两个问题其实只是一个,字符串和变量拼接的规则,必须这样。

回答你第三个问题:如果单引号(双引号)中还想用单(双引号),只有两种方式,第一是使用转义字符(\),第二是单引号中包双引号反之亦然。

查看完整回答
反对 回复 2016-04-21
  • 2 回答
  • 0 关注
  • 1320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信