Javascript 提示用户输入信息,然后对数据进行排序

Javascript 提示用户输入信息,然后对数据进行排序,javascript,user-input,command-prompt,sorting,Javascript,User Input,Command Prompt,Sorting,对于一个类项目,我需要用Javascript创建一个程序,要求用户输入3个名称,然后按字母顺序对名称进行排序并在屏幕上打印 我已经找到了如何创建一个提示框供用户输入数据,我可以让程序将用户输入的字符串打印到屏幕上。但是,我不知道如何让Javascript对字符串进行排序。我知道我需要使用一个数组,但我不确定数组放在哪里,或者如何让它知道用户输入的变量 这是我目前掌握的代码: <html> <script> function disp_prompt() {

对于一个类项目,我需要用Javascript创建一个程序,要求用户输入3个名称,然后按字母顺序对名称进行排序并在屏幕上打印

我已经找到了如何创建一个提示框供用户输入数据,我可以让程序将用户输入的字符串打印到屏幕上。但是,我不知道如何让Javascript对字符串进行排序。我知道我需要使用一个数组,但我不确定数组放在哪里,或者如何让它知道用户输入的变量

这是我目前掌握的代码:

<html>
<script> 

function disp_prompt() 
      {
      var names=prompt("Please enter three names","Names")
      document.getElementById("msg").innerHTML= names
      }

</script> 


<center><input type="button" onclick="disp_prompt()" value="Click Here"></center>
<br>

<h2><center><div id="msg"></div></center></h2>
</html>

函数disp_prompt()
{
变量名称=提示(“请输入三个名称”,“名称”)
document.getElementById(“msg”).innerHTML=名称
}


整个事情可能看起来像

var namesToPrompt = 3,
    names         = [ ];

// as long as namesToPrompt is truthy, prompt for inputs
while( namesToPrompt-- ) {
    names.push( prompt('Please enter a name') );
}

// sort our array
names.sort( byName );

// and print it
document.getElementById( 'msg' ).textContent = names.join(',');

function byName( a, b ) {
    return a.localeCompare( b );
}
如果您想让用户同时输入所有名称,您可以

var inputNames = prompt( 'Please enter three names','Names' );

document.getElementById( 'msg' ).textContent = inputNames
                                                 .split( /,\s+/ )   // split by any amount of white-space characters in a row
                                                 .sort( byName )
                                                 .join( ',' );

function byName( a, b ) {
    return a.localeCompare( b );
}

整个事情可能看起来像

var namesToPrompt = 3,
    names         = [ ];

// as long as namesToPrompt is truthy, prompt for inputs
while( namesToPrompt-- ) {
    names.push( prompt('Please enter a name') );
}

// sort our array
names.sort( byName );

// and print it
document.getElementById( 'msg' ).textContent = names.join(',');

function byName( a, b ) {
    return a.localeCompare( b );
}
如果您想让用户同时输入所有名称,您可以

var inputNames = prompt( 'Please enter three names','Names' );

document.getElementById( 'msg' ).textContent = inputNames
                                                 .split( /,\s+/ )   // split by any amount of white-space characters in a row
                                                 .sort( byName )
                                                 .join( ',' );

function byName( a, b ) {
    return a.localeCompare( b );
}

只有一个提示:用户如何输入3个名称?您尝试了什么?你知道怎么处理这根绳子吗?提示:、和函数仅显示一个提示用户如何输入3个名称?您尝试了什么?你知道怎么处理这根绳子吗?提示:,和函数意外勾选xD这基本上就是我建议的方法。不过,您可以不使用该函数而直接执行
.sort()
。我不建议让它们同时执行这三个名称。仅仅是因为他们可以输入
jeff,tim,tyler
jeff tim tyler
或jeff,tim,tyler`或任何其他随机案例,您必须对所有这些案例进行说明,才能使其起作用。您可以执行
.split(/\s |,|,\s)
,但即使这样也可能无法覆盖所有边缘情况。而且这也不允许全名,比如
jeff shaver
,因为它有一个空格。@jeff shaver有没有办法让提示框有三个输入框?还是只需要显示三个单独的提示框?如果是这样,我如何让程序打印所有三个提示框中的信息?我曾经让程序提示3个单独的框,但它只会打印最后一个框的输入。@jAndy出于某种原因,当我尝试您编写的代码时,它会提示3个框输入,但不会打印页面上的任何内容。@AnnikaZwirn任何复杂的对话框(如更多输入元素)都必须自己创建(html+css)或您使用许多可用的UI框架之一方法是一个非常简单、快速的脏元素。如果没有打印任何内容,请尝试
.innerHTML
而不是
.textContent
,例如,旧版IE浏览器不知道它。意外单击xD基本上就是我建议这样做的方式。不过,您可以只执行
.sort()
没有这个功能。我不建议让他们同时做这三个名字。仅仅是因为他们可以输入
jeff,tim,tyler
jeff,tim,tyler
或jeff,tim,tyler`或任何其他随机情况,并且你必须考虑所有这些情况才能工作。你可以做
.split(/\s |,\s)
但即使这样也可能无法涵盖所有的边缘情况。而且这也不允许全名,比如
jeff shaver
,因为它有一个空格。@jeff shaver有没有办法让一个提示框有三个输入框?或者我只需要显示三个单独的提示框?如果有,我如何让程序打印信息来自所有三个提示框的信息?我曾经让程序提示三个单独的框,但它只会打印最后一个框的输入。@jAndy出于某种原因,当我尝试您编写的代码时,它会提示三个框输入,但它不会打印页面上的任何内容。@AnnikaZwirn任何复杂的对话框(如更多输入元素)必须自己创建(html+css)或使用多种可用的UI框架之一。例如,
prompt()
方法是一个非常简单、快速的脏元素。如果没有打印任何内容,请尝试
。innerHTML
而不是
。textContent
,传统IE浏览器对此一无所知。