You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery移除textarea偶数行的实现问题及代码修正

移除textarea中所有偶数行内容的正确实现

你的代码里犯了几个关键错误:

  • $('#dinput').val()返回的是纯文本字符串,不是jQuery DOM对象,根本没法调用.find()、.remove()或者.html()这些DOM操作方法
  • 你混淆了DOM元素操作和文本内容处理的逻辑,textarea的内容是纯文本,得用字符串/数组的方式处理,不能拿DOM选择器去套

下面是正确的实现方案:

实现思路

  1. 获取textarea里的全部文本内容
  2. 把文本按换行符分割成一行一行的数组(注意处理textarea开头可能存在的空行)
  3. 过滤数组:保留原文本里的奇数行(对应数组索引为偶数的项,因为数组从0开始计数,你示例里要保留的第1、3、5、7、9行,对应数组索引0、2、4、6、8)
  4. 把过滤后的数组重新用换行符拼接成字符串,再赋值回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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:01:30