2017-10-15 114 views
0

我正要在这里回答一个问题,并发现我的自我挣扎似乎是一件容易理解的事情。
考虑这个HTML:输入id保留字

<input type="text" id="width" value="foo" /> 
 
<input type="button" value="width.value" onclick="console.log(width.value)"/> 
 
<input type="button" value="window.width.value" onclick="console.log(window.width.value)"/>

我们有一个inputwidthid并具有一个onClick事件它是所有记录输入的值两个按钮。它们之间的不同之处在于,一个输入直接访问输入的id作为变量width.value,另一个输入通过window.width.value来完成。
这里令人惊叹的部分是只有window.width.value工作,另一个返回undefined

我查找了javascript保留关键字,但找不到关于width的任何内容,顺便说一句,它也与height关键字一样。
我错过了什么?

+1

这是关于范围。在你的'width.value'中,你正在访问按钮的width-attribute属性。在这种情况下,'width.value == this.width.value'。 –

+0

只是想说@FrederikHansen说了些什么,基本上忘记了INPUT的属性也是如此,..就像宽度和高度。 – Keith

回答

1

button对象上调用onclick方法。因此,除非您指定您想要窗口的width属性,否则它将被按钮对象的width属性遮蔽。在这种情况下,按钮的宽度没有value属性。

+0

我简直不敢相信我忘记了! :) –