Javascript 随机化li项并冻结多个li项
我需要随机化一个5-n个li项目的列表,并为1-5个项目设置一个特定的位置,例如,我有Javascript 随机化li项并冻结多个li项,javascript,jquery,random,Javascript,Jquery,Random,我需要随机化一个5-n个li项目的列表,并为1-5个项目设置一个特定的位置,例如,我有 a b c d e f 我想把最后4个随机排列,放在li[0]字母D和li[2]字母F上 结果: d f c b a e 这是我的密码。我错在哪里?谢谢 var ul = document.querySelector('ul'); for (var i = ul.children.length; i >= 0; i--) { if(ul.children.innerHTML =
var ul = document.querySelector('ul');
for (var i = ul.children.length; i >= 0; i--) {
if(ul.children.innerHTML == "XXX") {
ul.appendChild(ul.children[0]);
}
if(ul.children.innerHTML == "XXXX") {
ul.appendChild(ul.children[1]);
}
if(ul.children.innerText == "XX") {
ul.appendChild(ul.children[2]);
} else {
ul.appendChild(ul.children[generateRandom(i) | 0]);
}
}
function generateRandom(i) {
var num = Math.random() * i | 0;
return (num === 0 || num === 1 || num === 2) ? generateRandom(i) : num;
}
var$test=$('#test');
var$li=$test.children();
而($li.length>0){
//从变量中随机选取一个li
var$next=$li.eq(Math.floor(Math.random()*10*$li.length)%$li.length);
//将其移动到ul的末尾
$test.append($next);
//从变量中删除li,这样就不会再次找到它
$li=$li.not($next);
}
//将f移到顶部,这样当我们将d移到顶部时,它将是第二个
$test.prepend($test.children();
//将d移到顶部
$test.prepend($test.children()代码>
- a
- b
- c
- d
- e
- f
- g
- h
- 我
- j
- k
随机性非常简单,但我不清楚它在逻辑上应该如何处理d和f特殊,因为列表可以是N长的。Math.random返回介于0和1之间的浮点值,random*I完全不可能等于0、1或2。通常人们使用Math.floor(Math.random()*i)
返回一个介于0和i之间的整数-1我需要任何像“Apple”和“Orange”这样的字符串才能进入所选的li位置,其余的都是随机的。OK,你如何识别“Apple”和“Orange”是特殊的?或者,对于这件事,你会按照什么规则说“任何字符串都像”?我们必须先了解逻辑规则,然后才能让代码实现这些规则。类似于if ul.children[i].innerHTML==“apple”append表示位置[2]