2011-06-28 128 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),但是你会有要在一个紧密的循环,以照顾和我使用'推'清晰。) –