【问题标题】:passing names into an array and sorting them将名称传递给数组并对它们进行排序
【发布时间】:2014-03-13 08:15:10
【问题描述】:

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

我能够将名称放入一个数组中,并显示在输出框中,但我不能让它将名称添加到列表中,或者按字母顺序对它们进行排序。它只是取代了它们。我以为我可以使用 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;`

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

    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;
    

    【讨论】:

    • 谢谢!这有很大帮助。如果我有更高的声誉,我会投票给你。
    【解决方案2】:

    一些事情:

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

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 2016-06-19
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2021-01-05
      • 2011-09-21
      相关资源
      最近更新 更多