使用jQuery移除textarea偶数行的实现问题及代码修正
移除textarea中所有偶数行内容的正确实现
你的代码里犯了几个关键错误:
$('#dinput').val()返回的是纯文本字符串,不是jQuery DOM对象,根本没法调用.find()、.remove()或者.html()这些DOM操作方法- 你混淆了DOM元素操作和文本内容处理的逻辑,textarea的内容是纯文本,得用字符串/数组的方式处理,不能拿DOM选择器去套
下面是正确的实现方案:
实现思路
- 获取textarea里的全部文本内容
- 把文本按换行符分割成一行一行的数组(注意处理textarea开头可能存在的空行)
- 过滤数组:保留原文本里的奇数行(对应数组索引为偶数的项,因为数组从0开始计数,你示例里要保留的第1、3、5、7、9行,对应数组索引0、2、4、6、8)
- 把过滤后的数组重新用换行符拼接成字符串,再赋值回textarea
修正后的完整代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <textarea id="dinput"> 10.3 137 10.9 394 <!--remove this--> 11.5 847 12.2 394 <!--remove this--> 12.9 930 13.4 940 <!--remove this--> 14.1 368 14.8 849 <!--remove this--> 15.4 563 </textarea> <input type="button" value="Filter Data" class="filterdata"> <script> $(".filterdata").click(function(){ // 获取文本内容并分割成行数组 const lines = $('#dinput').val().split('\n'); // 过滤:保留索引为偶数的行,同时跳过空行 const filteredLines = lines.filter((line, index) => { return index % 2 === 0 && line.trim() !== ''; }); // 重新拼接并赋值回textarea $('#dinput').val(filteredLines.join('\n')); }); </script>
额外说明
- 如果你的行号计数是从1开始,要移除的是偶数行,那上面的过滤逻辑刚好匹配;如果要移除奇数行,把条件改成
index % 2 !== 0就行 - 代码里的
line.trim() !== ''是用来过滤空行的(比如你textarea开头的那个换行),如果不需要这个逻辑可以直接删掉
内容的提问来源于stack exchange,提问作者Rajiv Srivastava
相关产品推荐
相关产品推荐

