2014-01-28 45 views
0
<div align="right"> 
    <textarea style="overflow:auto;resize:none" id="sorter2" name="sorter2" rows="4" cols="50" maxlength="100" wrap="hard"></textarea><br>  
    <input type="button" value="Numbers in Asc" onClick="SortNumbers()">   
</div> 

這是我的HTML頁面,我正在寫JavaScript作爲:排序號了根據使用textarea的長度HTML和Javascript

function SortNumbers(){ 
var arr=document.getElementById("sorter2").value.split(","); 
arr.sort(); 
alert(arr) 
document.getElementById("sorter2").value=arr; } 

爲了這個,我正在整理編號,如:輸入時9,8,7,143,2,96作爲最小數字的預期輸出是2,最長的單詞是143我怎麼能做到這一點,任何人都可以幫助我提前感謝。

+0

我認爲你的意思是一種自然排序,其中2在10之前,而不是長度爲通常意味着構成它的字符數 –

+0

我很困惑,因爲當我將代碼放在jsfiddle中時,它至少在Chrome中按預期工作。 –

+0

你是同一個人問這個嗎? http://stackoverflow.com/questions/21396608/sorting-words-according-to-length-in-textarea-using-html-javascript目前還不清楚你的意思是按照長度排序。例如,「9,8,7,143,2,96」的期望輸出是什麼? –

回答

0
arr.sort(function(x,y){ 
    return x.toString().length > y.toString().length || // sort by length 
    x > y; // and by its value 
}) 
+0

我相信他的意思是做一個自然的排序,而不是由組成數字 –

+0

的字符的數量確實,但如果你測試它,它會產生自然順序:)我只是想表達(而不是ab) –

+1

是的,直到你開始在非整數http://jsfiddle.net/UCva9/1/添加,但是,然後再次運行沒有清楚他的實際意義如此:) –

0

試試這個

function SortNumbers() { 
      var arr = document.getElementById("sorter2").value.split(",");     
      for (var i = 0; i < arr.length; i++) { 
       for (var j = 0; j < arr.length; j++) { 
       if((+arr[i])<(+arr[j])){ 
        var temp=arr[i]; 
        arr[i]=arr[j]; 
        arr[j]=temp; 
       } 
       } 
      } 
      alert(arr) 
      document.getElementById("sorter2").value = arr; 
     } 

+常用3 [i]的使用parseInt函數代替(ARR [1])

在這種情況下,你會得到你的號碼排序,結果將是 2,7,8,9,96,143