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/

問題は何ですか?IEのsort実装は他のブラウザと同じではありませんか? 問題は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 に答える