首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何随机显示一个div

如何随机显示一个div
EN

Stack Overflow用户
提问于 2013-07-20 07:05:31
回答 3查看 1K关注 0票数 4

下面是另一位用户在此处编写的代码,用于显示/隐藏一个随机延迟在4- 8秒之间的div

代码语言:javascript
复制
<script>
    function showCity() {

      $('#city-middle').show();
      window.setTimeout( hideCity, 10 );
    }

    function hideCity() {
      $('#city-middle').fadeOut(200);
      window.setTimeout( showCity, 3000 + (Math.random() * 5000) );
    }

    hideCity();
</script>

所以div #city-middle (显示和淡出)有一个名为#bolt-container的子DIV,它显然会随着该div一起出现和淡出。在这个螺栓容器中有4个子div,名为bolt-1到bolt-4。每个div都位于不同的位置。

代码语言:javascript
复制
<div id="city-middle">

    <div id="bolt-container">
        <div class="bolt-1">
        </div>
        <div class="bolt-2">
        </div>
        <div class="bolt-3">
        </div>
        <div class="bolt-4">
        </div>
    </div>
</div>

我需要的是让#bolt-1 - #bolt-4 div一次随机出现一个,没有动画。

到目前为止,我用谷歌搜索了一下,只找到了一个可能会有帮助的jsfiddle -- http://jsfiddle.net/tricinel/FgXDC/

我已经尝试了如下实现,但没有成功。

代码语言:javascript
复制
    function showCity() {
      $('#city-middle').show();
      window.setTimeout( hideCity, 10 );
    }

    function hideCity() {
      $('#city-middle').fadeOut(200);
      window.setTimeout( showCity, 3000 + (Math.random() * 5000) );
    }

    hideCity();


    var divs = $('#bolt-container').find('.div'),
    len = divs.length,
    randomDiv,
    speed = 1000;

var interval = setInterval(
                function() { 
                        randomDiv = Math.floor(Math.random()*len);
                        divs.removeClass('show');
                        divs.eq(randomDiv).addClass('show');                         
                } , speed);

我知道我的布局有问题,但作为一个初学者,我甚至不知道该去哪里看!会不会是我没有正确关闭第一个jQuery?或者没有为第二个函数设置某种形式的函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-20 07:17:51

为了适应你发布的小提琴,你需要做的就是使用:

代码语言:javascript
复制
var divs = $('#bolt-container').find('div'), //fetch all the divs

注意,var divs = $('#bolt-container').find('.div')获取所有带有div 类(!)的元素,这些元素是id为#bolt-container的元素的后代。在您的示例中,您不需要这样做,您希望获取此类元素下的所有<div>。这就是上面改编的代码所做的事情。

别忘了CSS (也将应用于#bolt-container下面的所有<div> ):

代码语言:javascript
复制
#bolt-container div {
    display:none;
}

Check it working here

票数 3
EN

Stack Overflow用户

发布于 2013-07-20 07:29:27

我将遵循已经给出的建议(由@acdcjunior提供):

代码语言:javascript
复制
var divs = $('#bolt-container').find('div');

和:

代码语言:javascript
复制
#bolt-container div {
    display:none;
}

但我也会将所有代码(不包括函数定义)放在以下代码之间:

代码语言:javascript
复制
$(document).ready(function() {
    // Put your code here.
});

以确保您的文档在使用其对象之前已加载。

票数 3
EN

Stack Overflow用户

发布于 2013-07-20 07:17:52

代码语言:javascript
复制
var divs = $('#bolt-container').find('.div'),

应该是:

代码语言:javascript
复制
var divs = $('#bolt-container').find('div'),

或者简单地说:

代码语言:javascript
复制
var divs = $('#bolt-container div'),
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17756816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档