You need to enable JavaScript to run this app. 尝试使用jQuery通过DOM访问修改input值时出现val方法undefined报错
优惠活动
大模型
产品
解决方案
定价
更多

尝试使用jQuery通过DOM访问修改input值时出现val方法undefined报错

报错原因定位
  • 代码调用链中不存在child方法:jQuery选取直接子元素的内置方法为children(),没有无s后缀的child实例方法。$(tds[0])是匹配到第一个表格单元格的jQuery实例,执行到$(tds[0]).child时返回值为undefined,后续调用val()方法就会触发Cannot read property 'val' of undefined的报错。
  • 目标元素选取逻辑偏差:代码初衷是给单元格内新渲染的input赋值,但绕开了jQuery的元素选取规则,没有正确定位到单元格内部的input节点。
可行实现方案
  • 生成input时直接嵌入value值(最高效,无需后续额外选元素操作)
let tr = $(this).parent().parent(), tds = tr.children();
$(tds[0]).html(`<input type='text' name='name' value='${name}' />`);
  • 先渲染input再单独赋值(使用find()在单元格范围内定位input节点)
let tr = $(this).parent().parent(), tds = tr.children();
$(tds[0]).html(`<input type='text' name='name' />`);
$(tds[0]).find('input').val(name);
  • 直接创建带属性的input对象再挂载到单元格内
let tr = $(this).parent().parent(), tds = tr.children();
$('<input>', {
  type: 'text',
  name: 'name',
  value: name
}).appendTo($(tds[0]).empty());
注意事项

如果坚持想通过取单元格直接子节点的方式获取input,需要切换为原生DOM访问逻辑,即通过tds[0].children[0]拿到原生DOM节点,再转为jQuery对象调用方法:$(tds[0].children[0]).val(name)。这种写法容错性差,一旦单元格内存在文本节点、占位符或者其他元素,很容易取错目标节点,不建议作为优先方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 14:15:05