小编T11*_*110的帖子

javascript中的递归函数,setTimeout和'this'关键字

假设我想用onClick方法调用一个函数.像这样:

<li class="inline" onclick="mve(this);" >TEMP</li>
Run Code Online (Sandbox Code Playgroud)

我有一个JS函数,如下所示:

function mve(caller){
caller.style.position = "relative";
caller.style.left = (caller.style.left+20) +'px';
var foo = setTimeout('mve(caller)', 2000);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在初始onClick调用之后,元素(调用者引用的)是未定义的.至少这是Firebug告诉我的.

我确信这是一个简单的解决方案,那么如何简单解释为什么以及如何解释?

如果我像这样运行它:

function mve(caller){
caller.style.position = "relative";
caller.style.left = (caller.style.left+20) +'px';
}
Run Code Online (Sandbox Code Playgroud)

我认为元素在每次点击时都会移动20px,但情况并非如此.思考?

javascript recursion this settimeout

1
推荐指数
1
解决办法
2230
查看次数

标签 统计

javascript ×1

recursion ×1

settimeout ×1

this ×1