我在Rails 4上,最后得到了这个javascript工作。它会随着fadein淡出效果每10秒随机更改一次背景图像。
唯一的问题是每隔一段时间,图像只会加载一半...然后它会开始闪现并变得疯狂。它将继续在图片之间不规律地闪烁,直到我刷新页面。
有谁知道为什么会这样?也许写得不好javascript?我的所有照片都位于公共/资产中。
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>
答案 0 :(得分:1)
我真的不想深入研究你的代码,用两个词来说:发生的事情正在发生,因为你必须等待一些动作在它们完成之前完成(比如动画)而你永远不会想要超时间隔。
这必须有所帮助:
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();
请查看小提琴:jsfiddle