如何用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
相关产品推荐
相关产品推荐

