2017-05-08 49 views
1

嗨,我有一些問題,試圖用JavaScript的HTML元素進行排序... 下面是HTML代碼:問題排序HTML元素的使用只有JavaScript

<div id="sorting"> 
     <span>1</span> 
     <span>2</span> 
     <span>3</span> 
     <span>4</span> 
     <span>5</span> 
</div> 

和JavaScript代碼:

function spanSort(){ 
    var div = Array.prototype.slice.call(document.getElementById("sorting").children); 
    div.sort(function(){ 
     return 1; 
    }); 
} 

我試圖將跨度的順序顛倒爲5,4,3,2,1 ......但沒有任何反應。我是否仍然可以使用排序方法,或者至少不使用任何循環(我知道它適用於循環)?

+1

你只是排序的元素,您實際上並不修改DOM的列表的副本沒有效果。 – Xufox

+0

您是否試圖在不考慮值的情況下顛倒列表,還是基於元素中的值進行排序?爲什麼你的排序函數返回'1'?這感覺就像是假設某種算法的黑客。 – nnnnnn

+0

我的目標實際上是基於元素中的值對它們進行排序,但在這種情況下,我只是試圖顛倒元素的順序來理解如何對它們進行排序(這就是爲什麼它返回1) –

回答

4

然後使用Array#reverse()附加排序的元素。在DOM之外的排序已在DOM

var sorting = document.getElementById("sorting") 
 

 
var div = [].slice.call(sorting.children).reverse(); 
 
div.forEach((el)=>{ 
 
sorting.appendChild(el); 
 
}); 
 
<div id="sorting"> 
 
     <span>1</span> 
 
     <span>2</span> 
 
     <span>3</span> 
 
     <span>4</span> 
 
     <span>5</span> 
 
</div>