javascript似乎允许直接通过其id获取html对象?
最近我注意到我朋友的代码有点奇怪。起初我认为这是一个错误,但后来我测试了它,它似乎工作。请查看此简单代码(请注意“button\u test.click()”):javascript似乎允许直接通过其id获取html对象?,javascript,html,Javascript,Html,最近我注意到我朋友的代码有点奇怪。起初我认为这是一个错误,但后来我测试了它,它似乎工作。请查看此简单代码(请注意“button\u test.click()”): var test=函数(){ 警惕(“你好”); } 点击 按钮测试。单击(); 它最初是未定义的行为,但由于编写了大量依赖于它的代码,浏览器供应商实现了它,现在HTML5规范对此给出了定义 不要依赖它,因为行为是不可预测的,它会使代码的可读性大大降低 请参见JavaScript中充满了“有效”但不是一个好主意的东西 改用这个:
var test=函数(){
警惕(“你好”);
}
点击
按钮测试。单击();
它最初是未定义的行为,但由于编写了大量依赖于它的代码,浏览器供应商实现了它,现在HTML5规范对此给出了定义
不要依赖它,因为行为是不可预测的,它会使代码的可读性大大降低
请参见JavaScript中充满了“有效”但不是一个好主意的东西 改用这个:
document.getElementById('button_test')
或者确保在使用按钮前定义了按钮测试:
if(!window.button_test) button_test = document.getElementById('button_test');
Internet Explorer始终(或至少在很长一段时间内)将元素id值公开为引用DOM元素的全局符号(窗口的属性)。多年来,其他浏览器也采用了同样的做法。就我个人而言,我认为这是一个绝对糟糕的想法,但你看吧。查看更多信息,了解为什么会发生这种情况(以及为什么依赖这种行为是个坏主意)。