更改 div 的背景图片错误

3

我希望在一个循环中将一个div的背景更改为9个不同的图像。 我尝试使用我在stackoverflow上找到的代码,但出了一些问题... 我是Java的新手,所以我找不到我的错误。

我想更改IMG的CSS:

.ch-img-1 { 
    background-image: url(Images/round280/1.png) ;
}

我的代码:

<body>
<ul class="ch-grid">
<li>
    <div class="ch-item ch-img-1">              
    </div>
</li>
</ul>

<script language="JavaScript">
  var currentBackground = 0;
  var backgrounds = [];
  backgrounds[0] = '/Images/round280/1.png';
  backgrounds[1] = '/Images/round280/2.png';
  backgrounds[2] = '/Images/round280/3.png';
  backgrounds[3] = '/Images/round280/4.png';
  backgrounds[4] = '/Images/round280/5.png';
  backgrounds[5] = '/Images/round280/6.png';
  backgrounds[6] = '/Images/round280/7.png';
  backgrounds[7] = '/Images/round280/8.png';
  backgrounds[8] = '/Images/round280/9.png';

function changeBackground() {
    currentBackground++;
    if(currentBackground > 2) currentBackground = 0;

    $('ch-grid.ch-item.ch-img-1').fadeOut(100,function() {
        $('ch-grid.ch-item.ch-img-1').css({
            'background-image' : "url('" + backgrounds[currentBackground] + "')"
        });
        $('ch-grid.ch-item.ch-img-1').fadeIn(100);
    });


    setTimeout(changeBackground, 2000);
}

$(document).ready(function() {
    setTimeout(changeBackground, 2000);        
});
</script>

</body> 
1个回答

3
你选择div的方式不正确。ch-grid是一个类,所以你需要使用"."作为前缀: .ch-grid 是选择ul的正确方式。因为你想选择包含在ul中的div,所以需要在父类(ch-grid)和子类(ch-item和ch-img-1)之间加上一个空格。一旦选择器正确,就可以使用 $(this) 引用对象。 Fiddle Example 因此,你更新后的JQuery应该如下所示:
function changeBackground() {
    currentBackground++;
    if (currentBackground > 8) currentBackground = 0;

    $('.ch-grid .ch-item.ch-img-1').fadeOut(100,function() {
        var $this = $(this);
        $this.css({
            'background-image' : "url('" + backgrounds[currentBackground] + "')"
        });
        $this.fadeIn(100);
    });

    setTimeout(changeBackground, 2000);
}

谢谢。我能不能只把整个代码放到一个test.js文件中,然后在页面头部链接它呢?或者我该如何将js代码包含到我的HTML中? - Max imal
我能看到淡入淡出效果,但很遗憾第一次更改后背景是空白的... - Max imal
你可以选择任何一种方式,完全由你决定。我会选择第一种选项,因为它会使内容更整洁,而且你可以更新jQuery而无需重新发布。 - Yass
Fiddle上的图像链接是可以在网上找到的图片。由于我的项目是本地的,所以我只添加了相对于hrml和test.js文件的本地地址。 在我的软件中,当悬停在我创建的链接上时,甚至会显示它们的小预览... - Max imal
在 JQuery 中,你的图片链接有一个 /。从 JQuery 的图片链接中删除前面的 /,它就可以正常工作了。编辑:很高兴听到这个消息。 - Yass
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接