Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 随机化li项并冻结多个li项_Javascript_Jquery_Random - Fatal编程技术网

Javascript 随机化li项并冻结多个li项

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 =

我需要随机化一个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 == "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]