3

我有这段代码在最新的 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/

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

4

1 回答 1

2

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

在 sorter 函数中,您可以显式设置返回值:

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

演示:http: //jsfiddle.net/2nUMk/3/

于 2013-01-21T08:27:26.077 回答