JavaScript对整数字符串进行排序

时间:2015-02-05 01:49:10

标签: javascript html arrays string parsing

所以我有这个形式,它接收一串需要在每个半冒号和空格分割的数字。然后,它对数字进行排序并返回排序列表。

出于某种原因,当我点击按钮时,它不会在文本框中发布值。

任何人都可以帮我解决我的问题!谢谢。

编辑1:在表单中添加了名称并添加了字段集



function sort() {
  var allNumbers = document.mainForm.mainSet.numbers.value.split("; ");
  allNumbers.parseFloat;
  for (var i = 0; i < allNumbers.length; i++) {
    allNumbers[i] = parseInt(allNumbers[i], 10);
  }
  allNumbers.sort();
  document.mainForm.mainSet.sorted.value = allNumbers.toString();
}
&#13;
<form name="mainForm">
<fieldset name="mainSet">
  Enter Numbers:
  <input type="text" class="text" name="numbers" />
  <br/>
  <br/>Select Option:
  <select name="sortOption" id="dropDown">
    <option value="Ascending" class="select">Ascending</option>
    <option value="Descending" class="select">Descending</option>
  </select>
  <br/>
  <br/>Sorted Numbers:
  <input type="text" class="text" name="sorted">
  <br/>
  <br/>
  <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
</fieldset>
</form>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

我没有看到任何名为&#34; mainForm&#34;或&#34; mainSet&#34;在HTML中。同样,我并不完全确定&#34; allNumbers.parseFloat;&#34;的目的是什么?或者是,因为那不是如何调用函数,而parseFloat不是Array的成员。

答案 1 :(得分:0)

我认为这就是你要找的东西。这将根据您在sortOption字段中选择的内容对数字进行排序。

var order;
function sort() {
  order = document.getElementById("dropDown").value;
  var allNumbers = document.getElementById("numbers").value.split("; ");
  var nums = [];
  for (var i = 0; i < allNumbers.length; i++) {
    nums.push(parseInt(allNumbers[i], 10));
  }
  nums.sort(function(a, b) {
    if (a > b)
      return order == 'asc' ? 1 : -1;
    else
      return order == 'asc' ? -1 : 1;
  });
  document.getElementById("sorted").value = nums.toString();
}
<form name="mainForm">
  <fieldset name="mainSet">
    Enter Numbers:
    <input id="numbers" type="text" class="text" name="numbers" />
    <br/>
    <br/>Select Option:
    <select name="sortOption" id="dropDown">
      <option value="asc" class="select">Ascending</option>
      <option value="desc" class="select">Descending</option>
    </select>
    <br/>
    <br/>Sorted Numbers:
    <input id="sorted" type="text" class="text" name="sorted">
    <br/>
    <br/>
    <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
  </fieldset>
</form>

答案 2 :(得分:0)

function sort() {
    function asc(a,b)
    {
        return a - b;
    }
    
    function desc(a,b)
    {
        return b - a;
    }

    var allNumbers = document.getElementById("numbers").value.split("; ");
    var nums = [];
    var order = document.getElementById("dropDown").value;
    for (var i = 0; i < allNumbers.length; i++) {
        nums.push(parseInt(allNumbers[i], 10));
    }
    nums.sort((order == 'asc') ? asc : desc);
    document.getElementById("sorted").value = nums.toString(',');
}
<form name="mainForm">
  <fieldset name="mainSet">
    Enter Numbers:
    <input id="numbers" type="text" class="text" name="numbers" />
    <br/>
    <br/>Select Option:
    <select name="sortOption" id="dropDown">
      <option value="asc" class="select">Ascending</option>
      <option value="desc" class="select">Descending</option>
    </select>
    <br/>
    <br/>Sorted Numbers:
    <input id="sorted" type="text" class="text" name="sorted">
    <br/>
    <br/>
    <input type="button" value="Sort Numbers" id="submit" onclick="sort()" />
  </fieldset>
</form>