Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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_Html_Css - Fatal编程技术网

Javascript 选择随机元素

Javascript 选择随机元素,javascript,html,css,Javascript,Html,Css,我有多个div元素,在父div下面有相同的类点,如下所示 <div id="dots"> <div class="dot"> . </div> <div class="dot"> . </div> <div class="dot"> . </div> ... <div class="dot"> . </div> </div> 这个怎么样 func

我有多个div元素,在父div下面有相同的类点,如下所示

<div id="dots">
   <div class="dot"> . </div>
   <div class="dot"> . </div>
   <div class="dot"> . </div>
   ...
   <div class="dot"> . </div>
</div>
这个怎么样

function addClassToRandomDotElement(){
    var dotElements = document.getElementsByClassName('dot');
    var totalDotElements = dotElements.length;
    var randomNumber = Math.floor(Math.random() * totalDotElements ) + 1;
    var randomDotElement = dotElements[randomNumber];
    randomDotElement.addClass('someClass');
}

setInterval(function(){
    addClassToRandomDotElement();
},5000);

如果使用jquery,可以尝试以下操作:

randomElements = jQuery("div").get().sort(function(){ 
  return Math.round(Math.random())-0.5
}).slice(0,5)

您需要做的基本上是首先选择所有点,然后在每次定期激活运行时删除以前设置的类,并将其再次设置为随机元素,索引从0到点计数-1

这里有一个例子

var$dots=$'dots.dot'; 功能激活{ $dots.removeClass'active' .eq[数学.平面格式.随机*$点.长度] .addClass'active'; setTimeoutactivate,1000; } 使活动 圆点,圆点{ 显示:内联块; 高度:50px; 宽度:50px; 背景:珊瑚; 边界半径:50%; 不透明度:0.2; 过渡:不透明度。3s缓解; } dots.dot.active{不透明度:1;}
还有一种不同的方式,很容易理解

var noofdot=$.dot.length; 设置间隔函数{ $.dot.removeClasssomeClass; var x=Math.floorMath.random*noofdot+1; $.dot:n个子项+x+.addClasssomeClass; }, 5000; .某个班级 { 背景:绿色; } . . .... .
以下是对所有元素的迭代:

对所有元素的迭代 向随机元素添加类 从迭代列表中删除该元素。 var elements=document.getElementsByClassNamedot; 设置间隔函数{ var random=Math.floorMath.random*elements.length; 元素[random].className+=extra; 删除元素[随机]; }, 1000; //把1000换成5000。这是以毫秒为单位的间隔速度。 .额外的{ 字体大小:200%; 背景颜色:矢车菊蓝; 宽度:50px; } 测验 测验 测验 测验
下面是另一个简单的方法:

函数变色{ var randInt=getRandomInt0,$.dot:not.newStyle.length-1; $$.dot:not.newStyle[randInt].addClass'newStyle'; } 函数getRandomIntmin,max{ 返回Math.floorMath.random*max-min+1+min; } 设置间隔函数{ 变色; },3000; .newStyle{背景色:绿色;} 测试 测验 凉的 更多 猫
哈哈我认为下面的内容应该适合你

window.radomNo=0; 设置间隔函数{ ifradomNo$.dot:eq+radomNo+.toggleClassrandomcss; window.radomNo=Math.floorMath.random*$.dot.length+1; $.dot:eq+radomNo+.toggleClassrandomcss; },1000; .css{ 背景:黄色; } . . . . . . . . . . . . .
我认为最好通过GetElementByClass选择您尝试过什么?澄清:从上一点删除类,或者通过保留上一点添加到新的?我打赌以前从来没有人尝试过选择随机元素。很好的问题。A+unique.downvoted,因为您没有设置间隔或向RandomElements添加类,所以应为Math.floorMath.random*totalDotElements;或者第一个元素永远不会被选中,并且有可能超出边界。
randomElements = jQuery("div").get().sort(function(){ 
  return Math.round(Math.random())-0.5
}).slice(0,5)