我正在尝试解决本课程,但是作为JavaScript的初学者,这有点困难。这门课程是关于对数字数组进行排序的(抱歉我的英语不好,这不是我的母语)
我使用了.sort()方法,因为数字位于数组中,但它不断告诉我这不是函数。
numbers = document.getElementById("numbers").value;
(function() { document.getElementById("run").addEventListener("click", function() {
numbers.sort()
alert(numbers);
});
})();
<div class="field">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" readonly value="2, 4, 14, 10, 90, 23, 16" />
</div>
<div class="actions">
<button type="button" id="run">Run</button>
</div>
当我运行我的代码时,它说numbers.sort()不是功能 但是我怎么用这种方法呢? 预先谢谢你!
答案 0 :(得分:2)
numbers
是一个字符串,因此您不能直接对字符串进行排序。您需要将其更改为数组。在这里,我正在使用拆分功能。
function handle() {
let numbers = document.getElementById("numbers").value;
numbers=numbers.split(',').sort((a,b)=>a-b)
alert(numbers);
};
<div class="field">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" readonly value="2,4,14,10,90,23,16" />
</div>
<div class="actions">
<button type="button" id="run" onclick='handle()'>Run</button>
</div>
答案 1 :(得分:0)
输入值只是一个长字符串。 您需要将字符串拆分为数字的字符串表示形式的数组,然后将其转换为数字类型。 要使用比较功能,您需要提供一个比较功能,否则,该功能将以unicode表示形式进行排序。 这是一个工作代码:
function handle() {
var numbersInputElemnt = document.querySelector('#numbers');
var numbersStr = numbersInputElemnt.value;
var numbers = numbersStr.split(', ').map(function(numStr) {
return +numStr;
});
numbers.sort(function compareNumbers(a, b) {
return a - b;
});
alert(numbers);
};
<div class="field">
<label for="numbers">Numbers:</label>
<input type="text" name="numbers" id="numbers" readonly value="2, 4, 14, 10, 90, 23, 16" />
</div>
<div class="actions">
<button type="button" id="run" onclick="handle()">Run</button>
</div>