JavaScript选择HTMLInputElement在我没有预料到的情况下起了作用
我有下面的HTML页面,我需要在JavaScript选择HTMLInputElement在我没有预料到的情况下起了作用,javascript,html,asp.net-mvc-4,Javascript,Html,Asp.net Mvc 4,我有下面的HTML页面,我需要在HTMLInputElement中向mineJavaScript函数提供输入值 <input id="input"> <span> <button onclick="mine(input)">Mine!</button> </span> mine: function (input) { alert(input.value); }, 矿 矿山:功能(输入){ 警报(输入值); },
HTMLInputElement
中向mine
JavaScript函数提供输入值
<input id="input">
<span>
<button onclick="mine(input)">Mine!</button>
</span>
mine: function (input) {
alert(input.value);
},
矿
矿山:功能(输入){
警报(输入值);
},
我打算将控件Id传递到函数中,然后查找并操作该控件。我想我需要使用类似于document.getElementById
或其JQuery
等价物的东西
然而,我惊讶地发现我只能使用input.value
这是如何工作的?这是因为id被用作窗口(全局对象)上的属性,该窗口指向具有id的节点
你可以看看上面的规格
不建议使用此行为,因为它更像是传统支持的“功能”,如果您与其他变量发生冲突,例如,如果您使用了id“top”
,或者如果您有另一个节点的名称属性首先匹配,则可能会产生意外的结果
- 结果也可能是HTMLCollection而不是HTMLElement
- 如果还没有该值的标识符(例如,您
var
d它或它是一个本机对象,如alert
),则结果将是来自的第一个匹配项
- 子窗口的名称
- 具有此值的name属性的所有节点
- 如果只有一个节点,则返回该节点。否则返回HTMLCollection
- id属性具有此值的节点
正如您所看到的,这种行为很容易导致意外的结果
不要使用它。