如何使用数组对 Textarea 值进行排序 Javascript
How To Sort Textarea Value Using Arrays Javascript
我需要使用 JavaScript 中的数组对文本区域的值进行排序。
我试过这段代码但没有任何反应:
var x = [];
x.push(myInput.value);
x.join("/n");
x = x.sort();
myOuput.value = x.toString();
我的HTML代码:
<textarea id="input"></textarea>
<p>
<textarea id="output"></textarea>
<p>
<button id="button">Click</button>
<p>
<div id="test"></div>
<script src="main.js"></script>
编辑:谢谢!所有的答案对我都有帮助,现在这是我的代码:
var z = myInput.value.split('\n');
z = z.sort();
myOuput.value = z.join('\n');
将字符串拆分为一个数组,对其进行排序,然后将其重新组合在一起:
var textarea = document.getElementById('theTextareaId'); // or whatever...
textarea.value = textarea.value.split('\n').sort().join('\n');
您可以获取该值,用新行拆分它,对其进行排序,将它与新行连接起来,然后将值赋回。
function sort(t) {
t.value = t.value.split('\n').sort().join('\n');
}
<textarea onchange="sort(this)" rows="10"></textarea>
当你调用一个数组的.join()
方法时,它return是一个字符串。您的代码未捕获该 return 值,因此连接结果立即被丢弃。
此外,您不想将整个文本区域值放入数组中。相反,您需要拆分该字符串(有新行的地方),其中 return 是一个数组。然后,您可以对该数组进行排序。
var ta = document.querySelector("textarea");
var btn = document.querySelector("input[type=button]");
var output = document.querySelector("div");
btn.addEventListener("click", function(){
var x = ta.value.split(/\n+/); // Split up input into an array
x = x.sort(); // Sort results
output.innerHTML = x.join("<br>"); // Display sorted output on new lines
});
textarea { height:7em; }
<textarea>z
x
c
a
zz
k</textarea>
<input type="button" value="Sort">
<div></div>
使用包含的 HTML,您似乎想将排序后的列表移至输出文本区域。如果是这种情况,请尝试:
<textarea id="input">Lorem
Foo
Ipsum
Bar</textarea>
<p>
<textarea id="output"></textarea>
<p>
<button id="button" onClick="sortInput()">Click</button>
<p>
<div id="test"></div>
你的Javascript:
function sortInput(){
var inputField = document.getElementById('input');
var outputField = document.getElementById('output');
var lineArray = inputField.value.split('\n'); //create array of strings
lineArray.sort(); //sort the array
outputField.value = lineArray.join('\n'); //join it together in the output
}
编辑:您可能希望更清楚地定义您的 .sort() 方法,因为默认方法不是很可靠。它不一定按照您对大写字母的预期进行排序。 documentation
我需要使用 JavaScript 中的数组对文本区域的值进行排序。
我试过这段代码但没有任何反应:
var x = [];
x.push(myInput.value);
x.join("/n");
x = x.sort();
myOuput.value = x.toString();
我的HTML代码:
<textarea id="input"></textarea>
<p>
<textarea id="output"></textarea>
<p>
<button id="button">Click</button>
<p>
<div id="test"></div>
<script src="main.js"></script>
编辑:谢谢!所有的答案对我都有帮助,现在这是我的代码:
var z = myInput.value.split('\n');
z = z.sort();
myOuput.value = z.join('\n');
将字符串拆分为一个数组,对其进行排序,然后将其重新组合在一起:
var textarea = document.getElementById('theTextareaId'); // or whatever...
textarea.value = textarea.value.split('\n').sort().join('\n');
您可以获取该值,用新行拆分它,对其进行排序,将它与新行连接起来,然后将值赋回。
function sort(t) {
t.value = t.value.split('\n').sort().join('\n');
}
<textarea onchange="sort(this)" rows="10"></textarea>
当你调用一个数组的.join()
方法时,它return是一个字符串。您的代码未捕获该 return 值,因此连接结果立即被丢弃。
此外,您不想将整个文本区域值放入数组中。相反,您需要拆分该字符串(有新行的地方),其中 return 是一个数组。然后,您可以对该数组进行排序。
var ta = document.querySelector("textarea");
var btn = document.querySelector("input[type=button]");
var output = document.querySelector("div");
btn.addEventListener("click", function(){
var x = ta.value.split(/\n+/); // Split up input into an array
x = x.sort(); // Sort results
output.innerHTML = x.join("<br>"); // Display sorted output on new lines
});
textarea { height:7em; }
<textarea>z
x
c
a
zz
k</textarea>
<input type="button" value="Sort">
<div></div>
使用包含的 HTML,您似乎想将排序后的列表移至输出文本区域。如果是这种情况,请尝试:
<textarea id="input">Lorem
Foo
Ipsum
Bar</textarea>
<p>
<textarea id="output"></textarea>
<p>
<button id="button" onClick="sortInput()">Click</button>
<p>
<div id="test"></div>
你的Javascript:
function sortInput(){
var inputField = document.getElementById('input');
var outputField = document.getElementById('output');
var lineArray = inputField.value.split('\n'); //create array of strings
lineArray.sort(); //sort the array
outputField.value = lineArray.join('\n'); //join it together in the output
}
编辑:您可能希望更清楚地定义您的 .sort() 方法,因为默认方法不是很可靠。它不一定按照您对大写字母的预期进行排序。 documentation