为什么无法通过document.forms获取表单内的label、div等元素
结论
不能直接通过document.forms返回的表单对象的索引方式获取表单内的label、div元素,你测试得到undefined是符合规范的正常表现。
原因
按照HTML标准定义,document.forms获取到的是HTMLFormElement实例,使用form['元素id/name']这种快速索引方式能访问到的只有表单关联元素,属于该范畴的元素仅包括:
inputbuttonselecttextareafieldsetobject
你测试中可以正常获取input、button,正是因为这两类元素属于表单关联元素;而label、div属于普通语义标注、布局元素,不属于表单关联元素,不会被纳入form的快速索引集合,因此直接访问会得到undefined。
替代操作
如果需要在表单范围内查找这类非表单关联元素,可以直接在表单节点上调用DOM查询方法,限定查找范围仅在当前表单内部,比通过节点关系跳转更直观:
示例代码:
// 获取表单内id为label1的元素 const label1 = form.querySelector('#label1') // 获取表单内id为div1的元素 const div1 = form.querySelector('#div1') // 批量获取表单内所有label元素 const allLabels = form.getElementsByTagName('label')
内容的提问来源于stack exchange,提问作者user16612869
相关产品推荐
相关产品推荐

