Javascript 随机div类顺序
正如许多人建议的那样,我采纳了他们的建议,并对我的问题进行了改革。我拿出了很多代码,现在已经显示了最小值。希望这足够清楚,可以重新提出我的问题 我有以下几把小提琴: 使用以下HTML:Javascript 随机div类顺序,javascript,jquery,class,html,random,Javascript,Jquery,Class,Html,Random,正如许多人建议的那样,我采纳了他们的建议,并对我的问题进行了改革。我拿出了很多代码,现在已经显示了最小值。希望这足够清楚,可以重新提出我的问题 我有以下几把小提琴: 使用以下HTML: <div id="main" tabindex="1"> <div class="tile tile1" block-id="1" style-id="1" style="left:0px; top:0px"></div> &l
<div id="main" tabindex="1">
<div class="tile tile1" block-id="1" style-id="1" style="left:0px; top:0px"></div>
<div class="tile tile3" block-id="2" style-id="2" style="left:100px; top:0px"></div>
<div class="tile tile1" block-id="3" style-id="1" style="left:200px; top:0px"></div>
<div class="tile tile2" block-id="4" style-id="2" style="left:350px; top:0px"></div>
<div class="tile tile2" block-id="5" style-id="2" style="left:0px; top:100px"></div>
<div class="tile tile1" block-id="6" style-id="1" style="left:100px; top:100px"></div>
</div>
如何让div的类以随机顺序显示
希望问题现在更清楚
非常感谢首先,您需要一个tile类数组
var tiles = [],
tile_re = /tile(\d+)/;
$('.tile').each(function(i) {
tiles[i] = this.className.match(tile_re)[0];
});
然后,需要洗牌类数组:
function shuffle(a)
{
var t;
for (var i = a.length - 1; i > 0; --i) {
var p = Math.floor(Math.random() * (i + 1));
if (p !== i) {
t = a[i];
a[i] = a[p];
a[p] = t;
}
}
}
shuffle(tiles);
最后,将结果合并回:
$('.tile').each(function(i) {
this.className = 'tile ' + tiles[i];
});
这是一个荒谬的代码量审查演示。特别是因为您还没有定义什么是
shuffle样式
甚至意味着什么,或者在演示的上下文中一个层或级别意味着什么。演示应该缩小到只显示足够的代码来显示问题,而不是整个应用程序。当然,您可以删除大部分呈现代码并替换为静态html,只需要足够的脚本来处理您要做的事情。我不同意代码的数量。我拨弄它以获得额外的支持。删除它或其中的注释会使事情变得更加模糊。尽管如此,我还是发现了一个书面错误。我修补了这个部门的等级,而不是它的风格。更正了这一点,并添加了一个额外的HTMLexample@Maurice:如果您想了解如何在jQuery中执行某个特定操作,请提供问题的最简单版本。想象一下,你是一名计算机初级课程第一天的老师。你将如何向学生展示它,以便他们准确地理解问题的本质(在问他们或教他们如何解决这类基本问题之前)?这是关于Stackoverflow的提问方式。研究这个问题,直到你完全理解它,把它简化为最简单的形式。仍然完全不知道你想要洗牌什么,这些类的来源等等。解释一点也不清楚。不同意所有你想要的,但直到你能提供最简单的演示,只需要提出问题,删除不相关的代码,以及一个结构良好的解释,怀疑你会发现许多人建议的帮助,我已经采纳了他们的建议,并改革了我的问题。我拿出了很多代码,现在已经显示了最小值。希望这是足够的和清楚的,足以重新打开我的问题。谢谢这是完美的作品。如果其他人想看到它的实际应用,我已经做了一个小动作:
$('.tile').each(function(i) {
this.className = 'tile ' + tiles[i];
});