Javascript document.getElementbyId与速记(Id.someMethod)
当您可以直接使用速记Javascript document.getElementbyId与速记(Id.someMethod),javascript,html,Javascript,Html,当您可以直接使用速记Id.something时,写出document.getElementById有什么好处吗?我之所以感兴趣,是因为我在教程中在线看到一些代码声明变量x等于document.getElementById,然后他们使用该变量,而不仅仅是使用速记: 例如: <code> var timeDisplay = document.getElementById("time"); timeDisplay.innerHTML = message; </code
Id.something
时,写出document.getElementById
有什么好处吗?我之所以感兴趣,是因为我在教程中在线看到一些代码声明变量x
等于document.getElementById
,然后他们使用该变量,而不仅仅是使用速记:
例如:
<code>
var timeDisplay = document.getElementById("time");
timeDisplay.innerHTML = message;
</code>
VS.
<code>
time.innerHTML = message;
</code>
关于我的评论,你永远不应该使用“速记”,因为它既危险又令人困惑 这是危险的,因为在执行代码之前,其他人可以定义
window.time
属性,而现在整个代码都中断了:
// some one put this in the global scope
var time = new Date();
// your code
time.innerHTML = message; // nope!
这甚至与主观选择无关。这就是你几乎永远不应该做的事
关于为何混淆的额外示例:
<div id="history"></div>
history.textContent = "Will it work?";
history.textContent=“它会工作吗?”;
猜猜会发生什么?你永远不应该做
Id.something
。这既危险又令人困惑。如果有人定义了window.time
属性怎么办?查看此项,了解更多有关id.someMethod
不好的原因。您在下面的评论中说,每次编写document.getElementById
都很乏味。您可以声明一个助手函数:函数$(id){return document.getElementById(id);}
-现在您只需编写$(“时间”)
,这仍然是额外的几个字符,但远没有这么多。@AhmadIbrahim:这太过时了。通过全局变量访问元素现在已经标准化。我不会经常这样做,但是关于这个主题的一些老问题已经过时了。@是的,我看到了关于答案的评论,但是关于浏览器支持(即Firefox的旧版本),答案是有效的。谢谢。每次我想使用GetElementById时,写它都有点乏味,但我会按照它的意义去做,因为它可能是“最佳实践”,并且会避免您前面描述的情况。@rich22如果您觉得它乏味,您可以始终使用.querySelector
,它比GetElementById
好得多,或者使用jQuery$(“#time)
@rich22在我开始使用jQuery之前,我希望有一个包装函数来帮助我输入如此多的字符often@Derek朕會功夫: 我不会。为什么.querySelector()
比.getElementById()
好得多?