gpt4 book ai didi

javascript - 操作 setTimeout 函数中由先前 setTimeout 函数创建的对象

转载 作者:行者123 更新时间:2023-11-28 01:09:14 28 4
gpt4 key购买 nike

我有一个使用 setTimeout 函数执行动画的函数,结构如下:

animation: function() {
//first
setTimeout(function(){
makeObject({ ... }); // this makes '#object .secondary' on the DOM
}, 500);
//second
setTimeout(function(){
...
}, 1000);
//third
setTimeout(function(){
$('#object .secondary').doSomething();
}, 1500);

}

我正在第一个 setTimeout 函数中创建一个与“.secondary”CSS 类关联的对象,然后尝试选择该对象并使用第三个函数中的类名来操作它。但是,在第三个函数执行后,该对象保持不变,并且我收到错误“未定义不是函数”。我认为这是因为 setTimeouts 同时执行,因此次要对象尚不存在可供第三个函数选择。所以我的问题是:如何从第三个 setTimeout 函数操作辅助对象?

最佳答案

超时本身不应该成为问题。第三个将在第一个之后大约 1 秒开始。

但是,你提到的错误是。根据您的评论:

The calls are actually d3 via d3.select('#object').selectAll('.secondary').fadeOut(50);

因为D3的Selectionsd3.select().selectAll() 返回的内容与 jQuery 无关,也没有它的方法。

在使用 .fadeOut() 之前,您必须将集合从 d3 转换为 jQuery

jQuery( d3.select('#object').selectAll('.secondary') ).fadeOut(50);

或者,在整个语句中使用 jQuery,正如您在代码片段中建议的那样:

jQuery('#object .secondary').fadeOut(50);

关于javascript - 操作 setTimeout 函数中由先前 setTimeout 函数创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685881/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com