[英]Remove text from textarea line by line
我做了一段代碼,逐行刪除了textarea上的文本。 但是似乎不起作用,它在第三行之后刪除了第一行並再次重復任何一個幫助我,這是我嘗試過的代碼:
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#remove').click(function(){
var textareavalue = $('#sometext').val().split("\n");
for(i=0; i < textareavalue.length;i++)
{
$('span').append('<br />Remove: '+textareavalue[i]);
textareavalue.splice(0, 1);
$('#sometext').val(textareavalue.join("\n"));
}
});
});
</script>
</head>
<textarea cols="40" rows="10" id="sometext"></textarea>
<br />
<button id="remove">Remove</button>
<br />
<span><span/>
您應該這樣使用索引0
:
$('span').append('<br />Remove: '+textareavalue[0]);
這是因為先前顯示的元素已通過splice
刪除,因此您的下一行再次位於第一個位置。
還要更改循環條件,因為這種split
會使您的length
減小:
while(textareavalue.length)
您還應該給span
指定一個id
,因為您的頁面上(或將來)可能會存在其他span
標簽。
每次單擊都可以清除span
內容,因此它僅顯示最后一次刪除操作的結果。
最好不要同時發生所有事件,因為那樣您就可以看到最終結果。 您可以使用這樣的計時器:
的HTML
<textarea cols="40" rows="10" id="sometext">
</textarea>
<br />
<button id="remove">Remove</button>
<br />
<span id="out"><span/>
JS
function removeLine() {
if ($('#sometext').val().replace(/\n$/, '').length === 0) {
// nothing to do
return;
}
var textareavalue = $('#sometext').val().split("\n");
// log line that will be removed
$('#out').append('<br />Remove: '+textareavalue[0]);
// remove line
textareavalue.splice(0, 1);
$('#sometext').val(textareavalue.join("\n"));
// remove next line with delay
setTimeout(removeLine, 200);
}
$(function(){
$('#remove').click(function(){
// clear log
$('#out').html('');
setTimeout(removeLine, 200);
});
});
這是一個小提琴 。
for(var i=0, l = textareavalue.length; i < l; i++) {
$('span').append('<br />Remove: '+textareavalue[0]);
textareavalue.splice(0, 1);
$('#sometext').val(textareavalue.join("\n"));
}
是的,由於使用了splice()方法,使用新數據和循環更新的數組本身也在同一數組上重復。 在循環內將i值更改為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.