2013-03-21 58 views
0

我正在做一个类的项目,我必须有一个用户输入名称,然后让程序按字母顺序排列名称。我提出的代码不是很优雅,但它可以很好地让用户输入3个不同的名称,然后在屏幕上输出名称。但是,我无法弄清楚如何对名称进行排序。我能够在disp_prompt()函数中放入一个数组吗?我试过这样做,它似乎没有工作,虽然我可能会把数组代码放在错误的地方。在提示中使用数组函数

这是我到目前为止已经编写的代码:

<body> 

<script> 

function disp_prompt() 
    { 
    var name1=prompt("Please enter three names:","Name 1") 
    var name2=prompt("Please enter three names:","Name 2") 
    var name3=prompt("Please enter three names:","Name 3") 
    document.getElementById("msg1").innerHTML= name1; 
    document.getElementById("msg2").innerHTML= name2; 
    document.getElementById("msg3").innerHTML= name3; 
    } 

</script> 

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

<h2><center><div id="msg1"></div></center></h2> 
<h2><center><div id="msg2"></div></center></h2> 
<h2><center><div id="msg3"></div></center></h2> 

</body> 

回答

0

您应在用户输入存储在数组中,并使用一个for循环:

var theArray = []; 

for (var i = 0; i < 3; i++) { 
    var plusOne = i + 1; 
    theArray[i] = prompt("Please enter threee names: ", "Name " + plusOne); 
    document.getElementById("msg" + plusOne).innerHTML = theArray[i]; 
} 

一旦你的名字是在阵列,这将是微不足道的对它们进行排序:

theArray.sort();

0

你可以用逗号分隔的输入:

function dispComment() { 
    var names, input; 
    input = prompt("Please enter three names (comma separated):","Name1,Name2,Name3"); 
    names = input.split(','); 
    // Check names length if it is needed 
    names.sort(); 
    // In the end, you'll have a sorted names array, assign to the fields 
    document.getElementById("msg1").innerHTML= names[0]; 
    document.getElementById("msg2").innerHTML= names[1]; 
    document.getElementById("msg3").innerHTML= names[2]; 
} 
+0

非常感谢你,这真的帮助! – 2013-03-21 23:59:03

0
  1. 你必须创建一个数组。
  2. 然后填充它。
  3. 然后使用数组索引来填充html。

像这样:

... 
var namesArray = [name1,name2,name3].sort(); 
document.getElementById("msg1").innerHTML= namesArray[0]; 
document.getElementById("msg2").innerHTML= namesArray[1]; 
document.getElementById("msg3").innerHTML= namesArray[2];