Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多次调用setTimeout函数时出现问题_Javascript_Jquery_Settimeout - Fatal编程技术网

Javascript 多次调用setTimeout函数时出现问题

Javascript 多次调用setTimeout函数时出现问题,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,当函数被多次调用时,我有一个setTimeout问题 当用户单击.icon时,将调用一个函数,该函数将在设置为第三个数组参数的持续时间内隐藏div,然后显示它 除非一个人先点击一个项目,然后再点击另一个项目,否则它可以正常工作。在这种情况下,两个项目的持续时间都设置为上次单击的持续时间。 我试图生成一个随机变量,而不是var cooldowndata,但没有成功 数据id具有以下内容:名称、价格和超时持续时间 <div class="actions"> <div cla

当函数被多次调用时,我有一个setTimeout问题

当用户单击.icon时,将调用一个函数,该函数将在设置为第三个数组参数的持续时间内隐藏div,然后显示它

除非一个人先点击一个项目,然后再点击另一个项目,否则它可以正常工作。在这种情况下,两个项目的持续时间都设置为上次单击的持续时间。 我试图生成一个随机变量,而不是var cooldowndata,但没有成功

数据id具有以下内容:名称、价格和超时持续时间

<div class="actions">
    <div class="actionholder">
        <div class="box"><div class="subbox"></div><div class="icon" data-id="ItemA|33|15000">ItemA 15s.</div></div>
        <div class="box"><div class="subbox"></div><div class="icon"  data-id="ItemB|21|6000">ItemB 6s.</div></div>
        <div class="box"><div class="subbox"></div><div class="icon"  data-id="ItemC|45|28000">ItemC 28s.</div></div>
    </div>
</div>

$(".icon").bind("click",function() {
var data = $(this).data("id");
cooldown(data);
});

function cooldown(data)
{
var cooldowndata =  data.split('|'); 
actiontohide = $("div").find("[data-id='" + data + "']");
actiontohide.hide();
setTimeout(function() { actiontohide.show(); }, cooldowndata[2]);
}
例如,您可以从项目B开始,然后项目C、C将在6秒后显示,而不是28秒:

如果有人能指出我做错了什么,我将不胜感激。 谢谢。

actiontohide是一个全局选项,因此每次单击都会覆盖它

actiontohide = $("div").find("[data-id='" + data + "']");
应该是

var actiontohide = $("div").find("[data-id='" + data + "']");

至少你应该有一把工作小提琴。你想隐藏哪个部门?非常感谢昆汀。