在IE9-10中使用sort()麻烦排序DOM元素

时间:2013-01-21 08:10:13

标签: javascript internet-explorer sorting dom

我有这个代码在最新的Chrome,Firefox,Opera中完美运行,但在IE9-10中失败了:

var div = document.querySelector('#wrap'),
    para = document.querySelectorAll('#wrap p');

var paraArr = [].slice.call( para ).sort(function( a,b ) {
  return a.textContent > b.textContent;
});

paraArr.forEach(function( p ) {
  div.appendChild( p );
});

小提琴: http://jsfiddle.net/2nUMk/1/

任何想法是什么问题? IE中的sort实现与其他浏览器中的实现不一样吗?这里的问题是sort吗?

1 个答案:

答案 0 :(得分:2)

div.innerHTML = "";中没有必要,因为它删除了已排序的元素。

在分拣机功能中,您可以显式设置返回值:

var paraArr = [].slice.call(para).sort(function (a, b) {
    return a.textContent > b.textContent ? 1 : -1;
});

DEMO: http://jsfiddle.net/2nUMk/3/