gpt4 book ai didi

d3.js - D3 : Delayed Display by setTimeout or setInterval

转载 作者:行者123 更新时间:2023-12-02 09:36:02 25 4
gpt4 key购买 nike

我试了一整天了,还是没成功。我想以某种延迟的方式显示一串文本。例如,一开始显示“a”,然后等待一秒然后显示“ab”,然后等待一秒然后显示“abc”,到目前为止......

我使用D3来显示,功能切片从字母表生成部分文本字符串。我使用 setTimeout 或 setInterval。没有一个有效。我很感激一些帮助。这是我的代码:

<!DOCTYPE html>
<html>
<head>
<style>
text {
font: bold 48px monospace;
}
.enter {
fill: green;
}
.update {
fill: #333;
}
</style>
</head>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var alphabet = "abcdefghijklmnopqrstuvwxyz".split("");
var width = 1000,
height = 200;

var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);

var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(32," + (height / 2) + ")");

function update(data) {
var text = svg.selectAll("text").data(data);
text.attr("class", "update");
text.enter().append("text")
.attr("class", "enter")
.attr("x", function(d, i) { return i * 32; })
.attr("dy", ".35em");

text.text(function(d) { return d; });
text.exit().remove();
}

// Method 1 - NOT WORKING
update(alphabet.slice(0, 1));
setTimeout(function(){},3000)
update(alphabet.slice(0, 2));
setTimeout(function(){},3000)
update(alphabet.slice(0, 3));
// ...

/*/ Method 2 - NOT WORKING
var i = 1;
setInterval(function(i) {
update(alphabet.slice(0, i));
i++;
}, 1500);
*/
</script>
</body>
</html>

最佳答案

update调用电话需使用您的setTimeout函数,如:

setTimeout(function () {
update(alphabet.slice(0, 1));
}, 3000);

setTimeout是非阻塞的;定时器到时后,它执行作为参数传入的函数。

编辑:您可能还希望您的代码像这样,完全删除更新功能(也许您有理由使用许多单独的 <text> 元素?):

var label = svg.append("text");

var i = 1;
setInterval(function () {
label.text(alphabet.slice(0, i++).join(""));
}, 1500);

关于d3.js - D3 : Delayed Display by setTimeout or setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186394/

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