我有一个使用该setTimeout
函数并调用另一个方法的方法。在初始加载时,方法2可以正常工作。但是,超时后,我得到一个错误,它method2
是未定义的。我在这里做错了什么?
例如:
test.prototype.method = function()
{
//method2 returns image based on the id passed
this.method2('useSomeElement').src = "http://www.some.url";
timeDelay = window.setTimeout(this.method, 5000);
};
test.prototype.method2 = function(name) {
for (var i = 0; i < document.images.length; i++) {
if (document.images[i].id.indexOf(name) > 1) {
return document.images[i];
}
}
};
问题是setTimeout()
导致javascript使用全局范围。本质上,您是在调用method()
类,而不是从中调用this
。相反,您只是在告诉setTimeout
您使用method
没有特定作用域的函数。
要解决此问题,您可以将函数调用包装在另一个引用正确变量的函数调用中。它看起来像这样:
test.protoype.method = function()
{
var that = this;
//method2 returns image based on the id passed
this.method2('useSomeElement').src = "http://www.some.url";
var callMethod = function()
{
that.method();
}
timeDelay = window.setTimeout(callMethod, 5000);
};
that
可能是this
因为callMethod()
在方法的范围内。
当您需要将参数传递给setTimeout
方法时,此问题会变得更加复杂,因为IE不支持向传递两个以上的参数setTimeout
。在这种情况下,您需要阅读闭包。
另外,作为旁注,由于method()
总是调用,因此您将自己设置为无限循环method()
。
问题内容: 专家。JavaScript无法产生所需的延迟效果。 从其他问题上,我因此知道,问题在于settimeout及其使用方式。但是我仍然无法理解Settimeout的工作原理。所以我将代码放在这里。由于知识目的,仅需使用Javascript。 实际上,我正在尝试清除有关 此的 概念,即javascript中的 闭包 。它们是Java的扭曲事物吗? 问题答案: 您有两个问题: 调用回调时将具有
本文向大家介绍浅谈JavaScript中setInterval和setTimeout的使用问题,包括了浅谈JavaScript中setInterval和setTimeout的使用问题的使用技巧和注意事项,需要的朋友参考一下 说到setInterval,就不得不提到setTimeout,二者都是用于定时执行某函数,区别在于setTimeout 只执行一次,而setInterval可以一直连续不断执行
本文向大家介绍JavaScript中setTimeout的那些事儿,包括了JavaScript中setTimeout的那些事儿的使用技巧和注意事项,需要的朋友参考一下 一、setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序。 但是,不知道大家有疑问没——就是我们在编程过程中的setTime
问题内容: 据我所知,这两段JavaScript的行为方式相同: 选项A: 选项B: 使用setTimeout和setInterval之间有什么区别? 问题答案: 他们本质上试图做同样的事情,但是这种方法比该方法更加准确,因为要等待1000ms,然后运行该函数,然后设置另一个超时。因此,等待时间实际上超过了1000毫秒(如果函数执行时间较长,则等待时间会更长)。 尽管有人可能会认为将执行完全相同每
本文向大家介绍JavaScript中setTimeout和setInterval函数的传参及调用,包括了JavaScript中setTimeout和setInterval函数的传参及调用的使用技巧和注意事项,需要的朋友参考一下 如何向 setTimeout 、 setInterval 传递参数 看如下代码: 这样写是可以正常工作的,但是如其说这是参数传递,还不如说是直接使用的全局变量。所以,这种写
本文向大家介绍javascript中setTimeout使用指南,包括了javascript中setTimeout使用指南的使用技巧和注意事项,需要的朋友参考一下 javascript中setTimeout使用指南 以上所述就是本文的全部内容了,希望大家能够喜欢。