<input type="text" placeholder="Password" id="password" name="password" />
<script>
console.log(password);
</script>
上面的代码在控制台中输出以下内容:
<input type="text" placeholder="Password" id="password" name="password">
当我输出变量password
并注意到HTML已被预先添加时注意到这一点。这是正常的行为吗?在这种情况下我们有getElementById
什么?
答案 0 :(得分:3)
传统行为是将具有ID(和名称,我认为)的所有元素定义为window
的属性。因此,window.password
(或仅password
)理论上可以用作getElementById
的快捷方式。但是,只要您定义具有相同名称的变量,就会出现不可预测的行为。
这是全局变量不好的一个原因。始终使用var
在本地定义变量。
答案 1 :(得分:3)
使用window[element id]
或window[element name]
获取元素,standard behavior由所有现代浏览器since Firefox 14实施。我会推荐你关于这个主题的一些帖子。正如您在大多数帖子中都会发现的那样,建议不要使用该行为,并且通常较慢,因为浏览器优化.getElementById
并检查变量是id还是名称是lowest priority in global scope。