Javascript 更改随机背景图像问题

标签 javascript html ruby-on-rails ruby-on-rails-4 background-image

我使用 Rails 4,终于让这个 javascript 工作了。它每 10 秒随机改变一次背景图像,并具有淡入淡出效果。

唯一的问题是,图像常常只能加载一半......然后它就会开始闪烁并变得疯狂。它将继续不规律地从一张图片闪烁到另一张图片,直到我刷新页面。

有谁知道为什么会这样吗?也许 javascript 写得不好?我的所有图片都位于公共(public)/ Assets 中。

home.html.erb:

<div id="imageDiv" class="imageContainer"></div>

  <script>
    var myImages = new Array("sushi.jpg", "pizza.jpg", "steak.jpg", "greens.jpg", "pancakes.jpg", "redbull.jpg", "coffeepow.jpg", "frenchfries.jpg", "tabs.jpg", "cigarettes.jpg", "noodles.jpg", "jelly.jpg", "pills2.jpg", "pills3.jpg", "gator.jpg", "needle.jpg", "tv.jpg", "cantop.jpg", "spices.jpg", "sliders.jpg", "fishoil.jpg", "chips.jpg", "cherries.jpg", "ciglighter.jpg", "eggs.jpg", "bakingsoda.jpg", "pasta.jpg", "beer.jpg", "champagne.jpg", "peppers.jpg");

    $(document).ready(function() {
        var random = myImages[Math.floor(Math.random() * myImages.length)];
        random = 'url(assets/' + random + ')';
        $('#imageDiv').css('background-image', random);

        setInterval(function() {
            SetImage();
        }, 10000);
    });

    function SetImage() {
        var random = myImages[Math.floor(Math.random() * myImages.length)];

        random = 'url(assets/' + random + ')';
        $('#imageDiv').fadeOut(900);

        setTimeout(function () {
            $('#imageDiv').css('background-image', random);
            $('#imageDiv').fadeIn(900);
        }, 900);
    }
  </script>

最佳答案

我真的不想深入了解您的代码,用两个词来说:无论发生什么,都正在发生,因为您必须等待某些操作完成才能完成(例如动画),并且您永远不希望在其中出现超时间隔。

这一定有帮助:

var images = ["http://i.imgur.com/xYDljlP.jpg",
          "http://i.imgur.com/f9MgLTO.jpg",
          "http://i.imgur.com/ECM9LKl.jpg"];


function setBackground() {
    var rand = Math.floor(Math.random() * images.length);
    $( "#imageDiv" ).fadeOut(300, function() {
      $( "#imageDiv" ).css("background", "url( " + images[rand] + " )");
      $( "#imageDiv" ).fadeIn(300, function() {
         setTimeout(setBackground, 3000);
      });
    });
}

setBackground();

请参阅 fiddle :jsfiddle

关于Javascript 更改随机背景图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30854827/

相关文章:

ruby-on-rails - 在 Rails 中初始化 API 客户端的好地方是什么?

javascript - JS : how to merge arrays with objects without duplicates

javascript - 按属性对对象数组进行排序(使用自定义顺序,而不是按字母顺序)

javascript - jquery - 添加监听器到生成的 html

html - 在移动设备上使 div 可滚动

jQuery.slideDown + jQuery.focus() 被调用两次并且不起作用?

javascript - 提交后如何创建一个包含表单中信息的元素?

javascript - 隐藏复选框的标签 - Yii2

ruby-on-rails - 是否可以让 Rails 中的 View 助手生成 Haml 缩进 HTML?

ruby-on-rails - 如何将谷歌地图添加到事件管理员?