在事件侦听器触发器期间设置超时不起作用

时间:2016-01-14 02:15:38

标签: javascript

我有一个页面,只要dom在页面加载时准备好就运行一个函数。然后我想在用户点击链接时再次触发它,但是第二次运行它我希望它暂停几秒钟。

我已经尝试了以下功能并且该功能正在运行,但超时并没有。

function changeRestrictionTime(time) { 
    // DO STUFF
}

require(["dojo/domReady!"], function(){
    changeRestrictionTime('12:00 pm');
    var next7 = document.getElementById('next-7days');
    next7.addEventListener('click', function() {
        setTimeout(changeRestrictionTime('12:00 pm'), 5000);
    }, false);
});

请告诉我这是什么问题。

请注意 - 虽然我使用djoReady的dojo功能,但我实际上并不知道任何道场,所以我更喜欢坚持使用vanilla JS。我也无法访问任何其他图书馆。 我也无法访问标记或AJAX请求函数

1 个答案:

答案 0 :(得分:4)

您需要传递函数参考:

 setTimeout(function() {changeRestrictionTime('12:00 pm')}, 5000);

您正在立即执行该函数并传递其返回值。