【发布时间】:2015-01-27 12:31:57
【问题描述】:
我通过 'getJSON. 然后我想设置每条消息,等待 3 秒(消息在屏幕上显示 3 秒)然后移动到下一条消息并再次等待 3 秒。 (对于每条消息,我正在加载一个 html 文件并设置一个 css 类) 取而代之的是,我的代码正在等待 3 秒,然后在没有任何超时的情况下转到最后一条消息。
$(document).ready(function(){
$("#startAds").click(function(){
$.getJSON("./messages.json",function(obj){
obj.messages.forEach(function(message){
setMessage(message);
});})})})
var setMessage = function(message){
setTimeout(function(){
console.log(message.name + " Is running now");
$("#result").load((message.template+".html"),function(responseTxt,statusTxt,xhr){
console.log("Message "+message.name+" is on. "+"Template "+message.template+" should be up right now;");
if(statusTxt=="success"){
console.log(message);
var j = 1;
message.textLines.forEach(function(line){
var p = "#p"+j.toString();
$(p).text(line);
j++;
});
$("#p9").text(message.textLines[0]);
$("#p10").text(message.textLines[1]);
$("body").addClass(message.template);
}
if(statusTxt=="error"){
alert("Error: "+xhr.status+": "+xhr.statusText);
}
})
},3000);}
如何通过 getJSON 设置我的消息并将每条消息显示 3 秒? 谢谢。
【问题讨论】:
-
你会立即开始很多超时,因为循环不会等待任何东西,并且所有超时都会在 3 秒内触发,或者至少非常接近它,所以只有最后一个将可见。
标签: javascript jquery json foreach settimeout