使用props过滤标签数组

时间:2015-07-26 19:55:34

标签: javascript

嘿伙计们,我在这里遇到问题。我从body标签中选择了所有元素,如下所示:

var DOMelementsOrder = []; 
var elements = document.querySelectorAll('body > div');

        for (var i = 0; i < elements.length; i++) {
            var element = elements[i];
            DOMelementsOrder.push(element);
            console.log(DOMelementsOrder[i].offsetLeft);
        }

我想要达到的目的是按照左右支撑偏移对数组中的标记进行排序。

for循环中的控制台返回“40,200,85”。我试图实现的是按照offsetLeft的顺序对DOMelementsOrder中的标记进行排序。

有任何帮助吗?提前谢谢。

仅限于纯粹的JS

修改

我的尝试:

function bubbleSort(a, b)
        {
            var swapped;
            do {
                swapped = false;
                for (var i=0; i < a.length-1; i++) {
                    if (a[i].b > a[i+1].b) {
                        var temp = a[i].b;
                        a[i].b = a[i+1].b;
                        a[i+1].b = temp;
                        swapped = true;
                    }
                }
            } while (swapped);
        }

        bubbleSort(DOMelementsOrder, DOMelementsOrder.offsetLeft);
        console.log(DOMelementsOrder);

1 个答案:

答案 0 :(得分:1)

使用Array.prototype.sort方法并传递比较函数来比较每个元素的offsetLeft值。

// qSA doesn't return an array, so we have to convert it first
var elements = Array.prototype.slice.call(document.querySelectorAll('body > div'));
// then we can sort
var orderedElements = elements.sort(function(a, b) {
  return a.offsetLeft - b.offsetLeft;
});