admin管理员组文章数量:1327524
Today I stumbled upon the possibility to access a DOM element in Javascript simply by its id e.g. like this:
elementid.style.backgroundColor = "blue"
I tested with a very short snippet if this works in IE, Firefox and Chrome - and it does. Here is the snippet I used:
<html><head>
<script>
function highlight() {
content.style.backgroundColor = "blue";
content.style.color = "white";
}
</script>
</head>
<body>
<div id="content">test content</div>
<div onclick="highlight()">highlight content</div>
</body></html>
So I wondered in which cases document.getElementById('elementid')
should be used (or similar framework replacements like $()) and what are the drawbacks of the direct access.
I was not able to find any useful documentation on this. Everywhere either getElementById
or framework methods are used.
Today I stumbled upon the possibility to access a DOM element in Javascript simply by its id e.g. like this:
elementid.style.backgroundColor = "blue"
I tested with a very short snippet if this works in IE, Firefox and Chrome - and it does. Here is the snippet I used:
<html><head>
<script>
function highlight() {
content.style.backgroundColor = "blue";
content.style.color = "white";
}
</script>
</head>
<body>
<div id="content">test content</div>
<div onclick="highlight()">highlight content</div>
</body></html>
So I wondered in which cases document.getElementById('elementid')
should be used (or similar framework replacements like $()) and what are the drawbacks of the direct access.
I was not able to find any useful documentation on this. Everywhere either getElementById
or framework methods are used.
- This does not work in Firefox (2). – Crescent Fresh Commented Jul 8, 2009 at 13:20
3 Answers
Reset to default 7It is propriety Microsoft gubbins. It doesn't work in lots of browsers — especially in standards mode (and you want standards mode to avoid quirks mode inconsistencies such as IE getting width
wrong).
You should also be concerned about name space. Right now you're treating it as if it's a variable in the global name space, and you would have to trust neither you nor any libraries that you include declare any global variables with the same name as DOM id's. The same goes for your highlight function.
Also while id's with dashes are perfectly valid, those would be inaccessible via this method.
e.g. <div id="container-wrapper"><div id="container"> ... </div></div>
would bee container-wrapper.style.color
which would then try to subtract wrapper.style.color from container.
It’s not a part of any standard. Besides, simple variables can be overwriten. Var content
could be redeclared in any place of your script, or external library (and, yes, I know global variables are evil, but ppl still use them…) and your script will break.
And, naturally, you cannot use IDs like alert
or document
etc.
本文标签: javascriptWhat are the drawbacks of accessing DOM elements directly by IDStack Overflow
版权声明:本文标题:javascript - What are the drawbacks of accessing DOM elements directly by ID? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742190153a2430062.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论