首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何最可靠地/简单地通过javascript访问<html>元素?

如何最可靠地/简单地通过javascript访问<html>元素?
EN

Stack Overflow用户
提问于 2021-04-22 00:59:11
回答 1查看 119关注 0票数 2

用例:我希望将类动态地添加到文档中的<html>元素中,这样,如果在包括body类的选择器中应用了一些当前正在使用.class-name &的SASS混频器,那么它就会正常工作--否则,除非在比<body>更高的级别上应用class-name,否则.class-name .body-class .rest-of-selector就无法工作。

以前我使用过document.body.classList.add,它看起来整洁、简单、健壮。

在将类转换为向<html>元素添加类时,我想知道等效的代码是什么:

  • document.html --不,似乎没有
  • document.rootElement --我认为应该工作,但是当我测试的时候,null还不够健壮吗?!
  • document.getElementsByTagName('html')[0] --相当笨重,但肯定有效/健壮?
  • document.body.parentElement --看起来更干净,应该可靠吗?这有那么直接吗?
  • 正如下面Louys所建议的,document.querySelector('html') --感觉我们不需要去查询它了吗?
  • 还有其他我没想过的选择吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 02:22:15

正如@thibsc和@LouysPatrice贝塞特上文所述,在document.querySelector("html")document.documentElement中有两个很好的选择。

document.querySelector("html")

document.querySelector()是一个重要的功能,在一般情况下,除了document.querySelectorAll()。它以文档顺序返回第一个匹配元素,对于`document.querySelectorAll(" html "),该元素将是根html对象。

CanIUse兼容性图

document.documentElement

documentElement对象的document属性(可以认为它是HTMLDocument对象的别名)总是引用根元素,在(可以认为它是HTMLDocument对象的别名)中,根元素通常是<html>标记。

CanIUse兼容性图

速度

在我的超科学速度测试中,document.documentElement今天看起来更快了:

代码语言:javascript
复制
let date = Date.now();
for (var i=0; i<123456; i++) {
    a = document.querySelector("html");
    a.classList.toggle("hello");
    a = null;
}
console.log(Date.now() - date);
//result: 254

let a;
let date = Date.now();
for (var i=0; i<123456; i++) {
    a = document.documentElement;
    a.classList.toggle("hello");
    a = null;
}
console.log(Date.now() - date);
//result: 225

最后,您的问题是什么“感觉”好--但这些是访问<html>元素的最佳方法。你对其他选择的看法是正确的:

  • document.html --不存在
  • document.rootElement --不受欢迎
  • document.getElementsByTagName('html')[0] -- 笨重但健壮
  • document.body.parentElement -- 也很健壮

但也许你想要的是:

代码语言:javascript
复制
const $ = document.querySelector.bind(document);
$("html").classList.add("myClass");
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67205363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档