我正在爲網頁創建一個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