2013-03-21 58 views
0

对于类项目,我需要在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> 
+0

Theres only one prompt prompt how the user enter 3 names? – 2013-03-21 17:52:38

+0

你有什么尝试?你有什么想法如何处理字符串?提示:['split'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split),['sort'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort)和['join'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/join )功能 – Bergi 2013-03-21 17:53:47

回答

4

整个事情可能看起来像

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); 
} 
+0

什么是downvote? – jAndy 2013-03-21 17:58:32

+0

点击意外xD这基本上是我如何建议做到这一点。虽然,你可以不使用函数来执行'.sort()'。 – 2013-03-21 18:00:52

+0

我不会建议让他们一次完成所有三个名字。仅仅因为他们可以输入'jeff,tim,tyler'或'jeff tim tyler'或者jeff,tim,tyler'或者任何其他随机的情况,你将不得不考虑它们的全部工作。你可以做'.split(/ \ s |,|,\ s)',但即使这可能不会涵盖所有的边界情况。而且这也不允许全名,比如'jeff shaver'因为它有空间。 – 2013-03-21 18:05:14

相关问题