将名称传递给数组并对其进行排序

时间:2014-03-12 23:45:10

标签: javascript arrays sorting

我要尝试做的是在textarea中输入名字和姓氏,一旦点击“输入名称”按钮,名称将进入一个数组,在那里排序,然后放回一个字符串并显示在“输出”框。每次输入名称时,它都会被添加到同一个数组中并进行排序。

我能够将名称输入到数组中,并显示在输出框中,但是我无法将其添加到列表中,或者按字母顺序对它们进行排序。它只是取代它们。我以为我可以用push来添加名字,但它似乎没有用。任何帮助将非常感激。提前致谢。

这是我到目前为止所拥有的:

<body>
<p>
<label for="name">Enter First and Last Name: </label>
<input id="name" name="name" />
<input type="button" id="addNameBtn" value="Enter Name" />
<input type="button" id="clearBtn" value="Clear Output" />
</p>
<p>
<label for="output">Output:</label><br />
<textarea cols="20" rows="15" id="output" ></textarea>
</p>
<script type="text/javascript" src="js/main.js"></script>
    <script type="text/javascript">grabText();</script> 
</body>
</html>


`function grabText(){
  var arr = [];
  var arr2 =[];
  var len = arr.length;
  for (var i = 0; i<len; i++);
    {
      var txt = document.getElementById('name').value;
      var textArea = document.getElementsByTagName('textarea');
      if (txt !=="")
      {
        arr.push(txt);
      }
    }
      arr2.push(arr);
      arr2.sort();
  var arrStr = arr2.join();
      textArea[0].value = arrStr;
      document.getElementById('name').value = '';
}
var btn = document.getElementById('addNameBtn');
btn.onclick = grabText;`

2 个答案:

答案 0 :(得分:0)

一些事情:

  1. for语句for (var i = 0; i<len; i++); - 注意最后一个字符 - 分号。这个for语句做的很少 - 它评估和增加i,而不是后面的语句。
  2. var len = arr.length;语法是正确的,但问题是arr在它之前被声明并且长度为零。
  3. var arr2将内容存储在调用之间,但它具有函数范围,需要移到grabText函数之外。

答案 1 :(得分:0)

Playground

var textArea = document.getElementById('output');
var name     = document.getElementById('name');
var btn      = document.getElementById('addNameBtn');
var arr = [];
// Why whould you need arr2? to store the original?

function grabText(){
  var txt = name.value;
  if (txt !==""){
     arr.push(txt);
  }
  arr.sort();
  var arrStr = arr.join(); 
  textArea.value = arrStr;
  name.value = '';
}

btn.onclick = grabText;