Javascript 逐行删除文本区域中的文本

Javascript 逐行删除文本区域中的文本,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我编写了一个代码,逐行删除textarea上的文本。然而,它似乎不起作用,它删除了第一行,然后第三行,并再次重复任何人帮助我,请这是我尝试的代码: <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(document).ready(function(){ $('#remove').cl

我编写了一个代码,逐行删除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/>

$(文档).ready(函数(){
$(“#删除”)。单击(函数(){
var textareavalue=$('#sometext').val().split(“\n”);
对于(i=0;i删除:'+textareavalue[i]);
textareavalue.拼接(0,1);
$('#sometext').val(textareavalue.join(“\n”);
}
});
});

去除

您应该像这样使用索引
0

$('span').append('<br />Remove: '+textareavalue[0]); 
您还应该为我们的
span
提供
id
,因为您的页面上(或将来)可能存在其他
span
标记

每次单击时最好清除
span
内容,这样它只显示上次删除操作的结果

最好不要让它同时发生,因为这样你就能看到最终的结果。您可以使用如下计时器:

$('span').append('<br />Remove: '+textareavalue[0]); 
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);
    });
});
函数removeLine(){
if($('#sometext').val().replace(/\n$/,'').length==0){
//无事可做
返回;
}
var textareavalue=$('#sometext').val().split(“\n”);
//将被删除的日志行
$(“#out”).append(“
Remove:”+textareavalue[0]); //拆线 textareavalue.拼接(0,1); $('#sometext').val(textareavalue.join(“\n”); //延迟删除下一行 设置超时(removeLine,200); } $(函数(){ $(“#删除”)。单击(函数(){ //清除日志 $('#out').html(''); 设置超时(removeLine,200); }); });
这是一个用于(var i=0,l=textareavalue.length;i删除:'+textareavalue[0]); textareavalue.拼接(0,1); $('#sometext').val(textareavalue.join(“\n”); }
是的,由于使用了splice()方法,数组本身也在使用新数据更新,循环也在同一数组上重复。将循环中的i值更改为0。

php与此有什么关系?我们去问问stackoverflow他们为什么建议使用php:)靴子很愚蠢,人类不愚蠢谢谢,你的答案几乎合适。但是当我尝试时,我遇到了一个问题,循环不会停止,例如,如果我放置test1、test2、test3,test4结果是Remove:test1 Remove:test2 Remove:test3 Remove:test4 Remove:test1 Remove:test2 Remove:test3 Remove:test4而这段代码可能会回答这个问题,提供关于为什么和/或如何回答这个问题的附加上下文可以提高其长期价值。
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"));
}