javascript - 确保随机分配的属性没有重复

标签 javascript jquery html random

我有这种情况。页面上有六个不同位置的占位符。我有六个不同的词,每个词应该随机分配给一个占位符。

我想要实现的是没有重复的单词,例如占位符 nr.3 获得“Word-1”,占位符 nr.6 获得“Word-1”。

这是我用来将单词随机分配给占位符的 JavaScript,在我的例子中是段落元素。

var word_1 = $('#main').append('<p class="word word-1"></p>'),
word_2 = $('#main').append('<p class="word word-2"></p>'),
word_3 = $('#main').append('<p class="word word-3"></p>'),
word_4 = $('#main').append('<p class="word word-4"></p>'),
word_5 = $('#main').append('<p class="word word-5"></p>'),
word_6 = $('#main').append('<p class="word word-6"></p>');

var pos_1 = $('.word-1').css({'left' : '0', 'right' : '0', 'top' : '48%'})
var pos_2 = $('.word-2').css({'left' : '-400px', 'right' : '0', 'top' : '58%'})
var pos_3 = $('.word-3').css({'left' : '0', 'right' : '-400px', 'top' : '36%'})
var pos_4 = $('.word-4').css({'left' : '0', 'right' : '-320px', 'top' : '61%'})
var pos_5 = $('.word-5').css({'left' : '-500px', 'right' : '0', 'top' : '36%'})
var pos_8 = $('.word-6').css({'left' : '-320px', 'right' : '0', 'top' : '46%'})

var words = ['word-1', 'word-2', 'word-3', 'word-4', 'word-5', 'word-6'];

$('.word').each(function(){
classIndex = Math.floor(Math.random() * words.length);
$(this).text(words[classIndex]);
})

这是一个说明我想要实现的目标的 fiddle 。 http://jsfiddle.net/somkchza/

最佳答案

只需在循环内添加:words.splice(classIndex,1); 即可删除使用的单词:

$('.word').each(function(){
    classIndex = Math.floor(Math.random() * words.length);
    $(this).text(words[classIndex]);
    words.splice(classIndex,1);
})

关于javascript - 确保随机分配的属性没有重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042048/

相关文章:

添加类的 addClass() 之后的 JQuery 函数

java - 在 html 中加载带有 Jess 规则的 java 小程序

html - 如何使用 AEM 提供的搜索 api 获取自动建议/自动更正功能

javascript - jQuery 函数不适用于附加的 html 表单

javascript - fallback.io 不适用于脚本

jquery - 2012 年推荐的 jQuery 模板?

javascript - AngularJs:单独的 js 文件中的嵌套指令

javascript - 终极版 : reset 1 variable to initial state in Redux

javascript - 当我关闭 cmd 时,Heroku 中的 Node.js 应用程序崩溃

javascript - ajax数据库插入后更新div