关于将数组项目处理为分区的问题
Issue on Processing Array Items Into a Div
你能看看这段代码,告诉我为什么我不能将数组项添加到.box中吗?我已经使用了.text()和.html()
var letters = [];
var str = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
var letters = str.split(",");
for (var j = 0; j <letters.length; j++) {
$(".box").html(letters[j]);
}
但他们只将最后一项"Z"添加到
您需要使用.append()
,因为每次时.html()
都会替换整个html
因为您使用的是.html()
,它用新文本替换任何预先存在的文本。
改为使用.append()
:
$(".box").append(letters[j]);
.html()将替换循环每次迭代时的内容。在第一次迭代中,"A"将被放在(".box")中,在第二次迭代中"B"将被"A"替换,依此类推。循环结束时,最后一个字母"Z"将是(".box'")中的唯一内容。如果您想在(".box')中添加所有字母,请使用.append()
请参阅链接:http://api.jquery.com/append/
这是因为html
不追加而是替换内容。
一个解决方案可以是使用append
而不是html
,但如果您有一个大的阵列,这会很慢。在这种情况下,最佳实践是一次性构建HTML:
$(".box").html(letters.join(''));
如果你想在盒子被更改之间有一个延迟,你可以使用setTimeout
:
(function step(){
var letter = letters.shift();
if (!letter) return;
$('.box').html(letter)
setTimeout(step,200);
})()
为了一个接一个地显示字母,您需要延迟更新方框:
var str = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
var letters = str.split(",");
next();
function next() {
if( letters && letters.length) {
$(".box").text(letters.shift());
window.setTimeout(next, 500);
}
}
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- 设置滑块分区上的滚动
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- jqGrid树网格问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何消除代码中的未定义和其他问题
- 关于将数组项目处理为分区的问题
- 家长/最近的分区问题