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

标签 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");
    });
});

最佳答案

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

您的代码在文档外部创建一个数组elements,并引用文档中的元素。然后,您对该数组进行排序,这根本不会改变您的文档。

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

关于javascript - 无法获取排序项目数组以在屏幕上显示结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488891/

相关文章:

javascript - console.log() 异步还是同步?

javascript - SVG 错误 : Permission denied to access property 'someFunction'

javascript - 在循环中使用 Jquery 选择/取消选择多个复选框(Rails)

javascript - 自动滚动到 Magento 中的下一个选项

php - 如何使用 PHP 和 SQL 创建 "multidimensional tree menu"?

javascript - 使用 JQuery 动态禁用 CheckBox

javascript - 使用 javascript 重复标记或位置?

javascript - 在传单中的 map 上显示栅格数据

javascript - 对此引用感到困惑

html - 图像未在 Bootstrap 中居中