CJ.*_*CJ. 2 javascript jquery setinterval
所以,我正在尝试创建一个javascript对象,并使用setInterval方法.
这似乎不起作用.如果我删除引号,则该方法运行一次.有什么想法吗?另外,我正在使用Jquery.
<script>
$(function(){
var kP = new Kompost();
setInterval('kP.play()', kP.interval);
});
var Kompost = function()
{
this.interval = 5000;
var kompost = this;
this.play = function()
{
alert("hello");
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
@Yacoby和@Nick提供的解决方案仅在play方法不使用其this内部值时才起作用,因为该this值将指向全局对象.
要处理这个问题,您需要另一种方法,例如:
$(function(){
var kP = new Kompost();
setInterval(function () {
kP.play();
}, kP.interval);
});
Run Code Online (Sandbox Code Playgroud)
也可以看看:
像这样称呼它:
$(function(){
var kP = new Kompost();
setInterval(kP.play, kP.interval);
});
Run Code Online (Sandbox Code Playgroud)
问题是kP在document.ready处理程序内部并且在全局上下文中不可用(它仅在该闭包内可用).将字符串传递给setInterval()或setTimeout()在全局上下文中执行时.
如果你检查你的控制台,你会发现它是错误的,说kP是未定义的,在这种情况下是正确的.总的来说,它应该是这样的:
var Kompost = function()
{
this.interval = 5000;
var kompost = this;
this.play = function() {
alert("hello");
};
};
$(function(){
var kP = new Kompost();
setInterval(kP.play, kP.interval);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |