一个怪怪的问题,setInterval的用法。

beyondjay 2007-11-19 05:42:06
function move(strWidth)
{
var img1 = document.getElementById("img1");
var firstChar = img1.style.paddingLeft.indexOf("px");
var intLeft = parseInt( img1.style.paddingLeft.substring(0,firstChar),10);
if (intLeft < strWidth)
{
var strLeft = parseInt( img1.style.paddingLeft.substring(0,firstChar),10) + 10 + "px";
img1.style.paddingLeft = strLeft;
}
}

function setoff()
{
var img1 = document.getElementById("img1");
img1.style.paddingLeft = "1px";
var strWidth = parseInt(document.body.offsetWidth,10);
//window.setInterval("move(strWidth)",1);
move(strWidth);
}

我用move(strWidth)没有任何问题。但是为何用window.setInterval("move(strWidth)",1)就提示参数出错。明明没错的阿!

...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
muxrwc 2007-11-19
  • 打赏
  • 举报
回复
变量范围问题。。。
你直接放进去会当做全局变量来处理。。
因为你没有全局变量strWidth,所以会产生错误(变量未定义,而我那样做会产生闭包,即保留变量的作用,这样就不会出现问题了)
beyondjay 2007-11-19
  • 打赏
  • 举报
回复
揭帖了,但是仍然感觉很奇怪,为什么我那样就不行。
muxrwc 2007-11-19
  • 打赏
  • 举报
回复
//window.setInterval( "move(strWidth) ",1);
try
window.setInterval(function () {
move(strWidth);
},1);

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧