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

如何用JS获取HTML表格中textarea的值?当前获取返回null

问题分析

你遇到的核心问题是:当尝试获取第2列单元格(j == 2)的值时,直接访问c.value(c是<td>元素)会返回null——因为<td>元素本身并没有value属性,该列的实际输入控件是单元格内部的<textarea>,必须先定位到这个控件再取它的value。

修复代码

把原代码中j == 2 ? c.value :这一行,替换为获取<textarea>的value:

j == 2 ? c.querySelector('textarea').value :

完整的修复后函数代码:

function savePo(user, origin) {
  user = 'user';
  origin = 'Trim';

  let date = new Date();
  options = {
    year: 'numeric',
    month: 'numeric',
    day: 'numeric',
    hour: 'numeric',
    minute: 'numeric',
    second: 'numeric',
    hour12: false,
    timeZone: 'CST'
  };

  let timeStamp = new Intl.DateTimeFormat('en-US', options).format(date).toString();
  timeStamp = timeStamp.replace(",", "");

  const tableRows = document.querySelectorAll("#tableRows tr");

  let tableData = [];
  if (origin == 'Trim') {
    tableData = [...tableRows].map(r => {
      let td = r.querySelectorAll("td");
      return [...td].map((c, j) =>
        j == 2 ? c.querySelector('textarea').value : // 修复此处
        j == 7 ? c.querySelectorAll('input[type="checkbox"]')[0].checked :
        j == 6 ? c.innerText :
        c.querySelector('input').value)
    });
    console.log('Table Data: ', tableData) // 建议用逗号分隔,避免数组转为字符串的混乱
  }
}
额外优化提示
  • 原代码中console.log('Table Data: ' + tableData)会把数组转为字符串,建议改为console.log('Table Data: ', tableData),这样在控制台可以直接展开查看数组结构,更便于调试。
  • 如果存在单元格可能没有<textarea>的情况,可以添加空值判断,比如c.querySelector('textarea')?.value || '',避免报错。

内容的提问来源于stack exchange,提问作者onit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:51:20