2011-06-28 126 views
-1

我想讓我的JS在我的表單框中列出我的名字VERTICALLY,但它只出現在HORIZONTALLY中,你知道爲什麼嗎?謝謝。 這是我的腳本:JavaScript排序功能

// initialize the counter and the array 
var numnames=0; 
var names = new Array(); 

function SortNames() { 
    // Get the name from the text field 
    thename=document.theform.newname.value; 
    // Add the name to the array 
    names[numnames]=thename; 
    // Increment the counter 
    numnames++; 
    // Sort the array 
    names.sort(); 
    document.theform.sorted.value=names.join("\n"); 
} 
+3

什麼是'document.theform.sorted'?一個'textarea'? –

回答

2

這段代碼有幾個問題,但所提供的表單字段是否真的存在,那你引用名稱字段的名稱,並在sortedtextarea,它應該基本上工作:Example。所以我的猜測是sorted是一個input type="text"。將其更改爲textarea


題外話(略):FWIW,這些問題我提到:

  1. 你不聲明你thename變量,因此墮入The Horror of Implicit Globals
  2. 您的numnames變量是不必要的(和維護問題);只需使用names.length
  3. 在JavaScript(你完全可以不理會)的約定是,您使用功能的首字母大寫,只有當他們構造功能(您通過new調用函數),並且您使用小寫所有其他功能。所以sortNames而不是SortNames或更好,addNameToList或類似的,因爲它只是排序的名稱。

此外,推薦var names = [];超過var names = new Array();,但他們都工作。

+1

names.length在名稱[names.length] = thename; – mplungjan

+0

我更喜歡'names.push()'。 – pimvdb

+0

@pimvdb:無論哪種方式,關鍵在於'names.length'服務於'numnames'似乎試圖服務的目的(不僅僅是在添加時,但後來如果你想知道有多少)。 (注意:在幾乎所有的瀏覽器上,賦值語句[比'push'更快](http://jsperf.com/silly-test-of-ways-to-append-to-array),但是你會有要在一個緊密的循環,以照顧和我使用'推'清晰。) –