私の問題が何であるかは完全にはわかりません。私は「テーブル」(未実際のHTMLテーブル)ソート以下のソートの手順があります。ループでJavaScriptソートの問題
function sortByName(tableBody) {
var projectList = [];
for (var i = 0; i < tableBody.length; i++) {
projectList.push(tableBody[i]);
}
console.log("about to enter");
//console.log(tableRows);
for(var i = 0; i < tableBody.length; i++){
var currentRow = tableBody[i];
if(currentRow.innerText !== null){
currentRow.style.display ="none";
}
}
projectList.sort(function(a,b){
var nameA = a.innerText.toUpperCase(); // ignore upper and lowercase
var nameB = b.innerText.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
console.log(projectList);
for(var q = 0; q < projectList.length; q++){
redisplayProjects(q, projectList);
}
}
function redisplayProjects(index, projectList){
console.log(projectList);
projectList[index].style.display = 'block';
}
コンソールに表示し、projectListは実際にコンソールにそれに戻ってstyle.displayを切り替える時にソートされています'ブロック'は、行が事前ソートされたのと同じ順序で表示されます。私は誰もが助けることができる何かを逃していますか?
実際には、DOMの要素の順序ではなく**配列**をソートしています。要素を並べ替えるには、DOM内で場所を入れ替えるか、CSSを使用する必要があります。つまり、フレックスボックスと組み合わせたオーダーです。 –
なぜ配列の並べ替えが実際のDOMに影響を与えると思いますか? –
DOM要素を含む配列をソートすることはDOMに何の影響も与えません。配列をソートした後、** Node.appendChild **を使用してDOMの新しい順序に配置できます:https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild –