我正在为网页创建一个textarea元素,该元素将按用户的指示显示某些输出。如何仅显示最后100行
例如
var Logger = {
log: function (line) {
$('logTextArea').append(line + '\n);
}
}
有没有一种简单的方法,当我做追加到只保留最后100个条目消除休息吗?
我正在为网页创建一个textarea元素,该元素将按用户的指示显示某些输出。如何仅显示最后100行
例如
var Logger = {
log: function (line) {
$('logTextArea').append(line + '\n);
}
}
有没有一种简单的方法,当我做追加到只保留最后100个条目消除休息吗?
您需要拆分新行并切断最后100行。为了缩短演示,我从最后使用了5行。
function addTime() {
var ts = new Date().toLocaleString();
var textarea = document.querySelector("#x");
var txt = textarea.value.length ? textarea.value.split(/\n/g) : [];
txt.push(ts);
textarea.value = txt.slice(-5).join("\n");
}
window.setInterval(addTime, 1000);
<textarea id="x" rows="10"></textarea>
我建议只是保持线的阵列,并且只推新线到其上,和移位线断。然后只需使用join转换为一个字符串并将您的textarea设置为该值。
var Logger = function() {
var lines = [];
return {
log: function(line) {
if (lines.length > 100) {
lines.shift(); // remove the first line
}
lines.push(line); // add the new one
$('#logTextArea').val(lines.join('\n'));
}
};
};
var logger = new Logger();
for (var x = 0; x < 110; x++) {
logger.log(x.toString());
}
textarea {
width: 300px;
height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="logTextArea"></textarea>
请注意,我已经更新了你的Logger对象是返回一个对象的函数。这使得有可能跟踪线条而不将它暴露给世界其他地方。
在'\ n'和['slice']上合并['split'ing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)来获得最后100个。或者你可以['shift'](https://开发者。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)是“split”数组中的第一个。 –
当用户提交它时(从最后一个条目开始并开始移动),您可以按照追加它们的方式(用“\ n”)查找新行,然后执行递归循环。 –
请更具体地了解此UI如何工作。 *“用户指示”*无意义 – charlietfl