JavaScript排序函数

JavaScript排序函数,javascript,function,sorting,Javascript,Function,Sorting,我试图让我的js在我的表单框中垂直列出我的名字,但它只水平出现,你知道为什么吗?谢谢 这是我的剧本: // 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

我试图让我的js在我的表单框中垂直列出我的名字,但它只水平出现,你知道为什么吗?谢谢 这是我的剧本:

// 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");
}

该代码有几个问题,但如果表单字段确实存在,并且您引用的名称是字段的名称,并且排序的是文本区域,那么它基本上应该可以工作:。所以我猜排序的是输入类型=文本。将其更改为文本区域

稍微偏离主题:FWIW,我提到的问题:

你没有声明你的thename变量,因此成为了牺牲品。 您的numnames变量是不必要的,并且存在维护问题;只需使用name.length。 JavaScript中的惯例是,只有当函数是通过new调用的构造函数时,才可以在函数中使用大写字母开头,其他所有函数都使用小写字母。因此,sortNames而不是sortNames,或者更好的是addNameToList或类似的名称,因为它不只是对名称进行排序。
另外,建议var name=[];变量名称上方=新数组;,但它们都能工作。

什么是document.theform.sorted?文本区域?names.length,如names[names.length]=名称@pimvdb:不管是哪种方式,关键是names.length的作用不仅仅是在添加时,而且是在稍后您想知道有多少时,numnames似乎在尝试提供服务。旁注:几乎所有浏览器上都有分配习惯用法,但您必须处于一个非常紧张的循环中才能注意到,我使用推送以保持清晰。@T.J.Crowder:您是对的,但在Chrome中推送速度更快。'sorted还嵌入在我的HTML文件中:。您是否建议我更改javascript和HTML文件中的排序?现在,如果我在“名称”字段中输入名称,一次输入一个名称,然后将名称垂直输入表单框,但如果我分组输入名称,名称之间有逗号或没有逗号,则名称仅水平输入表单框。@叹气:对不起,我不太明白您的意思。但是,如果我在组中输入它们,它们之间有逗号或没有逗号,它们水平进入表单框,只是你的字面意思是你在newname字段中键入name1、name2、name3,那么当然这些名称将被视为一个名称。在从字段中检索它们时,您必须使用split或其他方法将它们拆分为您想要使用的分隔符上的单个条目,然后将它们单独添加到排序列表中。