Javascript 具有类的DOM树元素,它们是全局变量吗?

Javascript 具有类的DOM树元素,它们是全局变量吗?,javascript,html,dom,Javascript,Html,Dom,游泳课怎么样,为什么不能在全球范围内使用 以下是我的HTML代码: <section id="sports"> <p class="swim">Swim</p> <p id="bike">Bike</p> <p>Run</p> </section> 游泳 自行车 跑 与文档中的任何节点一样,CSS类为.swim的节点实际上是全局的 您可以在CSS中访

游泳课怎么样,为什么不能在全球范围内使用

以下是我的HTML代码:

<section id="sports">
        <p class="swim">Swim</p>
        <p id="bike">Bike</p>
        <p>Run</p>
</section>

游泳

自行车


与文档中的任何节点一样,CSS类为
.swim
的节点实际上是全局的

您可以在CSS中访问它,如
.swim{display:none;}

在Javascript
document.querySelectorAll('.swim')[0]中,style.display='none'

或jQuery$('.swim')

这里是一个演示

游泳类怎么样,为什么不能全局访问

不,与IDs不同,您不能使用元素的类“全局”(通过
窗口
对象)访问元素。原因是这不是规格

那到底是什么意思?许多元素具有相同的类,那么
window.
意味着什么呢?它会是一个数组吗?HTML在同一个类中可以有几十个、数百个或数千个元素

每当元素上的类发生更改时,必须更新所有这些全局对象的速度也会非常慢。这是非常需要的,因为您有
getElementsByClassName
querySelector[All]


顺便说一下,从
窗口
对象通过ID访问元素并不被认为是最佳做法。

您是如何尝试访问它的?您所说的“全局访问”是什么意思?我访问的是swim.methodOrProperty。我刚刚注意到,对于ID,我可以使用bike.methodOrProperty。你理解我刚才给你的答案吗?是的,我理解你的答案只是想知道为什么类不能像ID那样访问。为什么要使用
querySelectorAll()[0]
而不是
querySelector