我试图在javascript中使用队列。我指的是this link
我能够添加到队列中,但在尝试从队列中删除时,我并没有完全成功。
var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
queue.push("<span class='charToFade'>" + input.charAt(i) +"</span>");
}
$(".text").text("");
for (var j = 0; j < queue.length; j++) {
$(".text").append(queue.shift());
}
输入:
<div class="text">Phone</div>
输出:
Pho
您可以查看Jsfiddle
任何人都可以帮助我吗
答案 0 :(得分:2)
您遇到的问题是,对于队列的每次迭代,都会删除一个项目。
这改变了对for循环条件的预期评估,因为队列的长度每次都在变化,var j
的大约一半等于队列的长度。
我建议使用while循环而不是for:
while(queue.length > 0){
$(".text").append(queue.shift());
}
答案 1 :(得分:1)
当你在每次迭代中循环queue
时,长度将减少1.因此它不会完全迭代。
var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
queue.push("<span class='charToFade'>" + input.charAt(i) + "</span>");
}
$(".text").text("");
var l = queue.length;
for (var j = 0; j <l ; j++) {
var e = queue.shift();
$(".text").append(e);
}
答案 2 :(得分:1)
另一种方法,使用for-loop:
var queue = [];
var input = $(".text").text();
for (var i = 0; i < input.length; i++) {
queue.push("<span class='charToFade'>" + input.charAt(i) +"</span>");
}
$(".text").text("");
// change here
for (var j = queue.length; j >= 0; j--) {
$(".text").append(queue.shift());
}