Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示随机类_Javascript_Jquery - Fatal编程技术网

Javascript 显示随机类

Javascript 显示随机类,javascript,jquery,Javascript,Jquery,假设我有一些课程,比如: <div class="something" style="display: none">Some text I would like to show</div> <div class="something" style="display: none">Some text2 I would like to show</div> <div class="something" style="display: none"&

假设我有一些课程,比如:

<div class="something" style="display: none">Some text I would like to show</div>
<div class="something" style="display: none">Some text2 I would like to show</div>
<div class="something" style="display: none">Some text3 I would like to show</div>
<div class="something" style="display: none">Some text4 I would like to show</div>
<div class="something" style="display: none">Some text5 I would like to show</div>
谢谢

setInterval(function() {
    $('.something').hide();
    var rand_number = random(0, ('.something').length - 1);
    $('.something:eq('+rand_number+')').show();
}, 5000);


尽量避免过于频繁地评估
$(“.something”)

setInterval(function() {
    var $s = $('.something');
    var r = Math.floor(Math.random() * $s.length);
    $s.hide().eq(r).show();
}, 5000);
如果您知道加载文档后元素列表不会更改,则可以进一步简化:

$(function() { // short-hand for document.ready
    var $s = $('.something');
    var count = $s.length;
    setInterval(function() {
        var r = Math.floor(Math.random() * count);
        $s.hide().eq(r).show();
    }, 5000);
});

尽量避免过于频繁地评估
$('.something')

setInterval(function() {
    var $s = $('.something');
    var r = Math.floor(Math.random() * $s.length);
    $s.hide().eq(r).show();
}, 5000);
如果您知道加载文档后元素列表不会更改,则可以进一步简化:

$(function() { // short-hand for document.ready
    var $s = $('.something');
    var count = $s.length;
    setInterval(function() {
        var r = Math.floor(Math.random() * count);
        $s.hide().eq(r).show();
    }, 5000);
});

您的示例看起来非常可靠,但是,我有一些建议: 1.您的类。某些内容可能应该有显示:样式表中没有显示,也没有内联显示;此外(最初),您不必以编程方式隐藏在中。再重复一遍是没有意义的

  • 这也可以通过使用存储在数组中的ID来实现,因此不必每次都查询DOM来获取元素。您可以将它与$(“.something”).hide()结合使用;如果不想存储之前显示的项目。如果div是动态生成的,这可能不实用

  • 您可以使用一个元素并更新其内容;当然,使用不同的元素可能有美学上的原因,而这些元素在您的示例中并没有暗示

  • 您可以使用一个元素并更新其内容;当然,使用不同的元素可能有美学上的原因,而这些元素在您的示例中并没有暗示


  • 您的示例看起来非常可靠,但是,我有一些建议: 1.您的类。某些内容可能应该有显示:样式表中没有显示,也没有内联显示;此外(最初),您不必以编程方式隐藏在中。再重复一遍是没有意义的

  • 这也可以通过使用存储在数组中的ID来实现,因此不必每次都查询DOM来获取元素。您可以将它与$(“.something”).hide()结合使用;如果不想存储之前显示的项目。如果div是动态生成的,这可能不实用

  • 您可以使用一个元素并更新其内容;当然,使用不同的元素可能有美学上的原因,而这些元素在您的示例中并没有暗示

  • 您可以使用一个元素并更新其内容;当然,使用不同的元素可能有美学上的原因,而这些元素在您的示例中并没有暗示


  • 你的伪代码看起来不错。你试过了吗?你的伪代码看起来不错。你试过了吗?我会使用
    .eq()
    而不是
    :eq()
    @Znarkus来避免将值连接到选择器中,然后解析它。据说它也更快。@alnitak啊,是的,有道理。我会使用
    .eq()
    而不是
    :eq()
    @Znarkus,以避免将值连接到选择器中,然后解析它。它也应该更快。@alnitak啊,是的,有道理。您可以将第2行和第3行合并到
    var class=$('.something').hide()标准JS中没有
    random(m,n)
    函数也不需要-1,Math.random()返回[0,1)(即从0到1互斥包含)。您可以将第2行和第3行合并到
    var class=$('.something').hide();
    标准JS中没有
    random(m,n)
    函数也不需要-1,Math.random()返回[0,1](即从0到1的范围内包含)。
    $(function() { // short-hand for document.ready
        var $s = $('.something');
        var count = $s.length;
        setInterval(function() {
            var r = Math.floor(Math.random() * count);
            $s.hide().eq(r).show();
        }, 5000);
    });