JavaScript 对整数字符串进行排序
JavaScript sorting a string of integers
所以我有这种形式,它接受一串数字,需要在每个分号和 space 处拆分。之后,它对数字和 returns 排序后的列表进行排序。
出于某种原因,当我单击按钮时,它没有 post 文本框中的值。
谁能帮我解决我的问题!谢谢。
编辑 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();
}
<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>
我在 HTML 中没有看到任何名为 "mainForm" 或 "mainSet" 的元素。同样,我也不完全确定 "allNumbers.parseFloat;" 的目的是什么,因为那不是调用函数的方式,而且 parseFloat 不是 Array.
的成员。
我想这就是您要找的。这将根据您在 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>
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>
所以我有这种形式,它接受一串数字,需要在每个分号和 space 处拆分。之后,它对数字和 returns 排序后的列表进行排序。
出于某种原因,当我单击按钮时,它没有 post 文本框中的值。
谁能帮我解决我的问题!谢谢。
编辑 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();
}
<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>
我在 HTML 中没有看到任何名为 "mainForm" 或 "mainSet" 的元素。同样,我也不完全确定 "allNumbers.parseFloat;" 的目的是什么,因为那不是调用函数的方式,而且 parseFloat 不是 Array.
的成员。我想这就是您要找的。这将根据您在 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>
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>