Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.getElementbyId与速记(Id.someMethod)_Javascript_Html - Fatal编程技术网

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()
好得多?