table元素disabled属性异常:为何JavaScript可访问该属性?
问题解答
虽然<table>标签在HTML标准里并不支持disabled属性,但你能在JS中访问到这个属性,原因主要有这几点:
DOM元素本质是JS对象,支持自定义属性
HTML标准属性是W3C规范定义的,但DOM节点在JS里就是一个普通的对象,JS允许给任何对象添加自定义属性。也就是说,不管标签本身是否支持某个属性,你都可以通过JS代码给这个DOM对象设置disabled属性(比如tablebyID.disabled = false),之后自然就能读取到它的值。代码中可能存在其他逻辑设置过该属性
你代码里判断tablebyID.disabled == false,说明项目里大概率有其他地方给这个table的DOM对象设置过disabled属性,用来标记这个区域的启用/禁用状态——毕竟<table>本身没法被禁用,开发人员用disabled这个属性名只是一种约定,方便理解它的作用。调试器会显示所有对象属性(包括自定义的)
Chrome调试器会列出DOM对象的所有属性,不管是HTML标准自带的,还是后期通过JS添加的自定义属性,所以你能在调试面板里看到这个disabled属性。
另外补充:如果从来没给这个table设置过disabled属性,直接读取的话会返回undefined,而undefined == false在JS中结果是false,不会进入后续的护士姓名验证逻辑。
内容的提问来源于stack exchange,提问作者humblefool
相关产品推荐
相关产品推荐

