【问题标题】:Switch banners with load and interval使用负载和间隔切换横幅
【发布时间】:2016-07-14 17:23:08
【问题描述】:

我正在尝试在同一个地方更改 2 个横幅,让我解释一下:

窗口加载正常

循环{

1- 加载横幅 1 (gif)

2- 延迟 6000 毫秒

3- 删除横幅 1

4- 加载横幅 2 (gif)

5- 延迟 7500 毫秒

6- 删除横幅 2

}

我正在尝试这样做,所以所有帧都正确加载,这就是为什么我需要在正确的时间加载横幅 div。

我的代码现在(不工作):

    $( window ).load(function() {
    function go() {
        $("#bannerkingbong").load("banner_king_bong.php");

        setTimeout(function(){
            $('#bannerkingbong a').remove();
        }, 6000);

        $("#bannerultra").load("banner_ultra420.php");

        setTimeout(function(){
            $('#bannerultra a').remove();
        }, 7500);
    }
    go();
});

如果有人可以帮助我.. 我很感激 :) 谢谢。

对此进行了测试,但没有成功:

$(function() {    
var queue = ["#bannerkingbong;http://smokebuddies.com.br/banner_king_bong.html", 3000, "empty;#bannerkingbong", "#bannerultra;http://smokebuddies.com.br/banner_ultra420.html", 4000, "empty;#bannerultra"];

(function next(queue) { 
    if(!queue.length) {
        return;
    }
    var action = queue.shift();

    //If wait action
    if($.isNumeric(action)) {
        setTimeout(function() {
            next(queue);
        }, action);
        return;
    }


    var c = action.split(";");

    //If remove action
    if(c[0] === 'empty') {
        $(c[1]).empty();
        return next(queue);
    }

    //If load action
    $(c[0]).load(c[1], function() {
        return next(queue);
    });        
})(queue);

});

【问题讨论】:

  • load 是异步的。如果您希望某个函数仅在此函数完成后触发,则需要使用回调。
  • “不工作” 不是一个恰当的问题描述,无法解释实际发生的情况
  • 对不起,我来自巴西,我正在努力用我的英语做到最好:)。

标签: javascript jquery load banner


【解决方案1】:

我的想法(或解决方案)是创建一个这样的操作队列:

["#bannerkingbong;https://httpbin.org/user-agent", 
    3000, 
    "empty;#bannerkingbong", 
    "#bannerultra;https://httpbin.org/ip", 
    4000, 
    "empty;#bannerultra"]

动作类型 1#bannerkingbong;https://httpbin.org/user-agent):

  • https://httpbin.org/user-agent 加载到#bannerkingbong

动作类型 23000)整数:

  • 等待 3 秒。

动作类型 3 empty;#bannerultra:

  • 用选择器#bannerultra清空元素。

现在,您可以使用队列来链接您的操作。下面是执行队列的代码:

$(function() {    
    
    var queue = ["#bannerkingbong;https://httpbin.org/user-agent", 3000, "empty;#bannerkingbong", "#bannerultra;https://httpbin.org/ip", 4000, "empty;#bannerultra"];
    
    (function next(queue) { 
    	if(!queue.length) {
        	return;
        }
        var action = queue.shift();
        
        //If wait action
        if($.isNumeric(action)) {
        	setTimeout(function() {
            	next(queue);
            }, action);
            return;
        }
        
        
        var c = action.split(";");
        
        //If remove action
        if(c[0] === 'empty') {
        	$(c[1]).empty();
            return next(queue);
        }
        
        //If load action
        $(c[0]).load(c[1], function() {
        	return next(queue);
        });        
    })(queue);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="bannerkingbong">

</div>
<div id="bannerultra">

</div>

希望对你有所帮助。

【讨论】:

  • 你的意思是加载时?
  • 是的,因为它是一个连续帧的 gif
  • 没问题$.load会将响应HTML添加到#element
  • 怎么样?你能告诉我我需要对我的代码进行哪些更改吗?
  • 我查看了您的 URL,它们已损坏,没有 HML 仅返回一个重定向!给我你的网址,我会给你一个工作代码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
相关资源
最近更新 更多