Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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在DIV中洗牌DIV_Javascript_Jquery_Html_Css - Fatal编程技术网

javascript在DIV中洗牌DIV

javascript在DIV中洗牌DIV,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在开发一个新网站,我们希望使用特定的类shuffle在文档中洗牌一组DIV元素: (function($){ $.fn.shuffle = function() { var allElems = this.get(), getRandom = function(max) { return Math.floor(Math.random() * max); }, shuffled = $.map(allElems

我正在开发一个新网站,我们希望使用特定的类shuffle在文档中洗牌一组DIV元素:

(function($){

$.fn.shuffle = function() {

    var allElems = this.get(),
        getRandom = function(max) {
            return Math.floor(Math.random() * max);
        },
        shuffled = $.map(allElems, function(){
            var random = getRandom(allElems.length),
                randEl = $(allElems[random]).clone(true)[0];
            allElems.splice(random, 1);
            return randEl;
       });

    this.each(function(i){
        $(this).replaceWith($(shuffled[i]));
    });

    return $(shuffled);

};

})(jQuery);
我的DIV元素如下所示:

<div class="row animate-in shuffle" data-anim-type="fade-in-up">
            <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
                <div class="team-wrapper">
                    <div class="team-inner" style="background-image: url('assets/img/team/1.jpg')">
                        <!-- <a href="#" target="_blank" > <i class="fa fa-twitter" ></i></a> -->
                    </div>
                    <div class="description">
                        <h3> Test User 1</h3>
                        <h5><strong> Tester - Inhaber </strong></h5>
                        <p>
                            fon: 1234567890<br>
                            <a href="mailto:test@test.de">e-mail: test@test.de</a><br>
                        </p>
                    </div>
                </div>
            </div>
            <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
                <div class="team-wrapper">
                    <div class="team-inner" style="background-image: url('assets/img/team/2.jpg')">
                        <!-- <a href="#" target="_blank" > <i class="fa fa-twitter" ></i></a> -->
                    </div>
                    <div class="description">
                        <h3> Test User 2</h3>
                        <h5><strong> Tester </strong></h5>
                        <p>
                            fon: 0987654321<br>
                            <a href="mailto:tester2@test.de">e-mail: tester2@test.de</a><br>
                        </p>
                    </div>
                </div>
            </div>
         </div>
元素的排列方式仍与在文档中写入元素的方式相同。我的错误在哪里


提前感谢:

您可以使用所有元素制作一个数组,然后在单独的函数中渲染它们。此时,您只需要使用如下内容来洗牌数组:

function shuffle(a) {
    for (let i = a.length; i; i--) {
        let j = Math.floor(Math.random() * i);
        [a[i - 1], a[j]] = [a[j], a[i - 1]];
    }
}

然后重新渲染父分区。

您可以使用所有元素创建一个数组,然后在单独的函数中渲染它们。此时,您只需要使用如下内容来洗牌数组:

function shuffle(a) {
    for (let i = a.length; i; i--) {
        let j = Math.floor(Math.random() * i);
        [a[i - 1], a[j]] = [a[j], a[i - 1]];
    }
}

然后重新渲染父分区。

下面是一个如何解决此问题的示例。 从中学习,并根据自己的情况实施

HTML:


下面是一个如何解决这个问题的例子。 从中学习,并根据自己的情况实施

HTML:


$'divshuffle div'。shuffle;似乎是针对ID为shuffle的div,但是shuffle是HTML中的一个类。也许可以试试$'div.shuffle div'?克隆元素有一些缺点,比如丢失处理程序,所以在进行洗牌时确实不能采用这种方法。我将给你们一个如何做的例子,但我将使用一个简化的版本,这取决于你们从中学习并实现它。发布为answer.and您肯定不想洗牌。使用此标记洗牌div,更像.shuffle>div。微小更改,主要差异$'divshuffle div'。洗牌;似乎是针对ID为shuffle的div,但是shuffle是HTML中的一个类。也许可以试试$'div.shuffle div'?克隆元素有一些缺点,比如丢失处理程序,所以在进行洗牌时确实不能采用这种方法。我将给你们一个如何做的例子,但我将使用一个简化的版本,这取决于你们从中学习并实现它。发布为answer.and您肯定不想洗牌。使用此标记洗牌div,更像是.shuffle>div。微小更改,主要差异这适用于id=container的1个元素,它始终是第一个返回的元素。如何处理一类元素?同样,选择所有元素,转换为数组,并对其进行forEach。您也可以像我一样将元素随机移动到容器中。这适用于id=container的1个元素,它始终是第一个返回的元素。如何处理一类元素?同样,选择所有元素,转换为数组,并对其进行forEach。你也可以像我一样将元素拖拽到容器中。
<div id="container">
  <div class="shuffleMe"> DIV 1</div>
  <div class="shuffleMe"> DIV 2</div>
  <div class="shuffleMe"> DIV 3</div>
  <div class="shuffleMe"> DIV 4</div>
  <div class="shuffleMe"> DIV 5</div>
  <div class="shuffleMe"> DIV 6</div>
</div>
<button onclick="shuffle()">
  SHUFFLE
</button>
function shuffle() {
  var container = document.getElementById("container");
  var elementsArray = Array.prototype.slice.call(container.getElementsByClassName('shuffleMe'));
    elementsArray.forEach(function(element){
    container.removeChild(element);
  })
  shuffleArray(elementsArray);
  elementsArray.forEach(function(element){
  container.appendChild(element);
})
}

function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}