我有两个函数,我想将一个变量传递给另一个变量。 第一个功能
var redirect_url;
$("li a.nav_item").click(function(){
redirect_url=$(this).attr("data-url");
alert(redirect_url); //correctly alerts the value
});
function update_counter(){
alert(redirect_url); //alerts Undefined
$("#final_countdown").text(timer);
}
答案 0 :(得分:0)
当您的计时器触发时,它与您定义它时的上下文不同。如果您希望它执行的函数与创建计时器时的范围相同,请执行以下操作:
function something() {
var x = 5;
var t = setTimeout(function(){
alert(x);//will alert 5
}, 500);
}
在这种情况下,计时器执行的函数可以识别x的值,并且可以使用它,即使它稍后会触发。
这是另一个更符合您情况的例子:
$("li a.nav_item").click(function(){
redirect_url=$(this).attr("data-url");
setTimeout(function(){
location.href = redirect_url;
}, 1000);
});
单击时,将获取包含新URL的属性。然后创建一个计时器,并在1000ms内调用一个函数。由于它是以这种方式编写的,因此在1000ms内执行的函数可以识别变量“redirect_url”并可以对其进行操作。