我尝试了不同的方法,但是我似乎确实在寻找一些显而易见的东西。尝试使用函数(方法)返回的值在对象内部,然后在同一对象内的setTimeout方法中使用该值。
这是html:
<h1>3000</h1>
javascript(在这种情况下为jQuery):
var foo = {
getValue: function() {
var h1Text = $('h1').text();
h1Text = parseInt(h1Text);
return h1Text;
},
useValue: function() {
var time = this.getValue();
var alertIt = alert('Hello');
setTimeout(alertIt,time);
}
};
foo.useValue();
// log shows correct value
console.log(foo.getValue());
// returns a number
console.log(typeof(foo.getValue()));
警报确实会显示,但是会在加载时而不是使用这3秒钟。
它确实记录了正确的值,并且还说这是一个数字,所以我真的不确定自己在做什么错。任何帮助表示赞赏。谢谢
最佳答案
在useValue()
中,您调用alert('Hello')
,因此它会立即执行并将结果存储在alertIt
变量中。您应该将其放在这样的函数中,因为setTimeout
希望将函数作为第一个参数:
var alertIt = function() {
alert('Hello');
}
setTimeout(alertIt,time);