javascript - 如何在 JavaScript/HTML 中一次又一次地重复数组列表中的项目
问题描述
我试图在我的网站上一个一个地显示数组中的文本,我可以做到一次,但我希望一次又一次地重复列表(重新开始),只要用户保持页面打开。
下面的代码在没有 while 循环的情况下工作,但只有一次:
<h1 id="looper" ></h1>
<script>
var i = ["ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ", "Hello", "hola", "नमस्ते", "你好!", "Здравствуйте"];
for( var j = 0 ; j < i.length; j++ ) {
setTimeout( (function(j){ return function(){$("#looper").text(i[j]);}})(j), j*1000 );
}
</script>
但是当我使用 while 循环时,浏览器会超载或冻结。
while(true){
for( var j = 0 ; j < i.length; j++ ) {
setTimeout( (function(j){ return function(){$("#looper").text(i[j]);}})(j), j*1000 );
}
};
我正在使用 Django,以防它也可以使用 python 来完成。
解决方案
您可以使用setInterval
而不是setTimeout
这样:
<script>
var i = ["ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ", "Hello", "hola", "नमस्ते", "你好!", "Здравствуйте"];
for( var j = 0 ; j < i.length; j++ ) {
//vvvvv THIS CODE CHANGED vvvvv
setInterval( (function(j){ return function(){$("#looper").text(i[j]);}})(j), j*1000 );
}
</script>
这样做的原因是setTimeout
设置一个函数运行一次,而setInterval
让它像你想要的那样一遍又一遍地运行
推荐阅读
- javascript - 使用单选按钮填充复选框列表
- python - Pandas 组合数据帧,删除所有初始数据帧中未出现值的行
- oracle - 使用过程创建物化视图
- python-3.x - 如何在python中将大型二进制文件转换为pickle字典?
- c++ - 使用 SetupDiGetDeviceRegistryPropertyW 获取所需大小的错误代码 122
- android - xml中的Android可绘制形状
- javascript - 为什么可以在 JSON 中定义函数?
- python - 登录时向用户显示烧瓶中的处理结果
- php - Laravel 5.6 身份验证重定向问题
- html - 我的 404 页面无法正常工作