无法获取已排序项目的数组以在屏幕上显示结果?

时间:2015-12-28 06:50:25

标签: javascript jquery html sorting

my jsfiddle中,我试图通过调用以下函数将项目从高价格分类到低价格:

function myFunction() {
  var elements = [].slice.call(document.getElementsByClassName("price"));
  elements.sort(function(a, b) {
    return parseFloat(b.innerHTML.substring(1)) - parseFloat(a.innerHTML.substring(1));
  });
  for (var i = 0; i < elements.length; i++)
    elements[i].parentNode.appendChild(elements[i]);
  console.log(elements);
}

我可以在console.log时看到它正常工作,但我无法将结果显示在屏幕上并更改项目的顺序。

我在this fiddle中看到下面的JavaScript,它有效,为什么不开采?

 $(function() {
    $(".offer_item").sort(function(a, b) {
        var priceAText = $(a).find(".offer_price").text();
        var priceBText = $(b).find(".offer_price").text();
        var priceA = parseFloat(priceAText.substring(1, priceAText.length));
        var priceB = parseFloat(priceBText.substring(1, priceBText.length));
        return priceA > priceB;
    }).each(function() {
      $(this).appendTo(".offer_list");
    });
});

1 个答案:

答案 0 :(得分:1)

工作示例对文档中的项目进行排序。

您的代码会在文档之外创建一个数组elements ,并引用de document中的元素。然后,您可以对此数组进行排序,这根本不会更改您的文档。

执行elements[i].parentNode.appendChild(elements[i]);时,element[i]仍然是文档中元素的引用,.parentNode也在文档中,因此您可以编辑文档。