嘿伙计们,我在这里遇到问题。我从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);
答案 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;
});