如何使用 Javascript 将 HTML 字符串中的每个单词打散,然后在 HTML 中将每个单词一一显示出来?
How to use Javascript to break up each word in a HTML string and then show each word back one by one in HTML?
我想获取一个 div 的 innerHTML,然后将字符串拆分为单词,并更改相同的 innerHTML 以逐个显示每个单词,中间有延迟。我下面的代码目前不起作用:
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
function timeoutFunction()
{
for (var i = 0; i < textSplit.length; i++) setTimeout(function () {
text.innerHTML = textSplit[i];
}, 500);
}
timeoutFunction();
});
这个怎么样,用递归?调用相同的函数并传递索引,当索引到达循环结束时,递归结束
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
function timeoutFunction(index){
text.innerHTML = textSplit[index];
// Recursion
if(index < textSplit.length - 1){
setTimeout(function(){
timeoutFunction(index + 1);
}, 500);
}
}
timeoutFunction(0);
});
第一次,你以为调用多个setTimeouts效果会如你所愿,其实不然。
另一种方法是将毫秒乘以索引 i
来实现效果。还有一件事,你应该使用语句 let
来保持索引的范围 i
.
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
text.innerHTML = '';
function timeoutFunction() {
for (let i = 0; i < textSplit.length; i++) {
setTimeout(function() {
text.innerHTML += ' ' + textSplit[i];
}, 500 * i + 1);
}
}
timeoutFunction();
});
Click on this screen!
<div id='article-text'>Ele from Stack</div>
只需将数组用作队列并处理它直到完成。 .shift()
从数组中提取下一项。
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
var runUp = text.innerHTML = '';
function timeoutFunction()
{
runUp += ' ' + textSplit.shift();
text.innerHTML = runUp;
if (textSplit.length) setTimeout(timeoutFunction, 500);
}
timeoutFunction();
});
我想获取一个 div 的 innerHTML,然后将字符串拆分为单词,并更改相同的 innerHTML 以逐个显示每个单词,中间有延迟。我下面的代码目前不起作用:
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
function timeoutFunction()
{
for (var i = 0; i < textSplit.length; i++) setTimeout(function () {
text.innerHTML = textSplit[i];
}, 500);
}
timeoutFunction();
});
这个怎么样,用递归?调用相同的函数并传递索引,当索引到达循环结束时,递归结束
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
function timeoutFunction(index){
text.innerHTML = textSplit[index];
// Recursion
if(index < textSplit.length - 1){
setTimeout(function(){
timeoutFunction(index + 1);
}, 500);
}
}
timeoutFunction(0);
});
第一次,你以为调用多个setTimeouts效果会如你所愿,其实不然。
另一种方法是将毫秒乘以索引 i
来实现效果。还有一件事,你应该使用语句 let
来保持索引的范围 i
.
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
text.innerHTML = '';
function timeoutFunction() {
for (let i = 0; i < textSplit.length; i++) {
setTimeout(function() {
text.innerHTML += ' ' + textSplit[i];
}, 500 * i + 1);
}
}
timeoutFunction();
});
Click on this screen!
<div id='article-text'>Ele from Stack</div>
只需将数组用作队列并处理它直到完成。 .shift()
从数组中提取下一项。
document.addEventListener("click", function() {
var text = document.getElementById("article-text");
var textSplit = text.innerHTML.split(" ");
var runUp = text.innerHTML = '';
function timeoutFunction()
{
runUp += ' ' + textSplit.shift();
text.innerHTML = runUp;
if (textSplit.length) setTimeout(timeoutFunction, 500);
}
timeoutFunction();
});