繁体   English   中英

通过ID直接访问DOM元素有什么缺点?

[英]What are the drawbacks of accessing DOM elements directly by ID?

今天我偶然发现了在Javascript中访问DOM元素的可能性,只需通过它的id,例如:

elementid.style.backgroundColor = "blue"

我测试了一个非常短的片段,如果这适用于IE,Firefox和Chrome - 它确实如此。 这是我使用的片段:

<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>

所以我想知道在哪些情况下应该使用document.getElementById('elementid') (或者像$()这样的类似框架替换)以及直接访问的缺点是什么。

我无法找到任何有用的文档。 无处不在使用getElementById或框架方法。

微软gubbins是正当的。 它在许多浏览器中都不起作用 - 特别是在标准模式下(并且您希望标准模式避免怪癖模式不一致,例如IE获取width错误)。

您还应该关注名称空间。 现在你把它当作全局名称空间中的一个变量来对待它,你不得不信任你或你包含的任何库都声明任何与DOM id同名的全局变量。 您的高亮功能也是如此。

此外,虽然带有破折号的id完全有效,但通过此方法无法访问。

例如<div id="container-wrapper"><div id="container"> ... </div></div>

将成为container-wrapper.style.color ,然后尝试从容器中减去wrapper.style.color。

它不是任何标准的一部分。 此外,简单的变量可以被覆盖。 Var content可以在你的脚本或外部库的任何地方重新声明(并且,是的,我知道全局变量是邪恶的,但ppl仍然使用它们......)并且你的脚本将会中断。

当然,您不能使用alertdocument等ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM